下記URLにタイトルの記事の解説が載っています。
www.atmarkit.co.jp/fdotnet/dotnettips/324winbaseform/winbaseform.html
この記事を見よう見まねで基本Form(この記事で言えばBaseForm)、継承先
Form(この記事で言えばForm1、Form2)を作り、継承先Formのコードをそれ
ぞれ
##########Form1##########
Public Class Form1
Inherits BaseForm
End Class
##########Form2##########
Public Class Form2
Inherits BaseForm
End Class
としましたところ、それぞれの
Inherits BaseForm
のところで
「クラス'Form1'に指定された基本クラス'BaseForm'は、その他のpartical
型の1すである基本クラス'System.Windows.Forms.Form'と異なることはで
きません。」
と怒られます。
その怒られる理由についてどなたか解説頂きたく、よろしくお願いします。
書き忘れましたが、VB.NET2005です。
編集 削除記事の画像を良く見て味噌
http://www.atmarkit.co.jp/fdotnet/dotnettips/324winbaseform/winbaseform_02.gif
先にBaseFormを作成しないと駄目だよ
お世話になっております。
>やじゅさんレスありがとうございます。
最初から作り直してみましたところ、今度は以下のように怒られます。
##########
ファイル内にデザインできるクラスがないため、このファイルのデザイナを表示できませんでした。ファイルの以下のクラスがデザイナで見つかりました: Form1 --- 基本クラス 'FormHaseiTest.FormBase' を読み込めませんでした。アセンブリが参照されているか、およびすべてのプロジェクトがビルドされているかを確認してください。
何か宣言しなければならない箇所で宣言していないとか、そういう類の
ものでしょうか?
初めまして。
FormBaseとForm1、Form2は同プロジェクト内に入っていますか?
(プロジェクトが違う場合には参照をしないといけません)
FormBaseはPrivateになっていたりしませんか?
(Privateになっていると外部から読込めません)
読込めない理由はこのくらいかなと。
ヘルプを見ると
##########
このエラーを解決するには
ファイル内の最初のクラスになるようにクラス コードを移動して、デザイナを再度読み込みます。
##########
とありますが
ファイル内の最初のクラスになるようにクラス コードを移動
とはどういうことなのでしょうか?
癒耶さん、レスありがとうございます。
FormBaseのDesignerソースコードは以下の通りです。
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FormBase
Inherits System.Windows.Forms.Form
'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows フォーム デザイナで必要です。
Private components As System.ComponentModel.IContainer
'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。
'Windows フォーム デザイナを使用して変更できます。
'コード エディタを使って変更しないでください。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label
Me.TextBox1 = New System.Windows.Forms.TextBox
Me.Button1 = New System.Windows.Forms.Button
Me.Label2 = New System.Windows.Forms.Label
Me.Button2 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(28, 24)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(55, 12)
Me.Label1.TabIndex = 0
Me.Label1.Text = "ヘッダ部分"
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(91, 23)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(150, 19)
Me.TextBox1.TabIndex = 1
Me.TextBox1.Text = "メッセージ"
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(271, 22)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(79, 29)
Me.Button1.TabIndex = 2
Me.Button1.Text = "追加"
Me.Button1.UseVisualStyleBackColor = True
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(28, 296)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(52, 12)
Me.Label2.TabIndex = 3
Me.Label2.Text = "フッタ部分"
'
'Button2
'
Me.Button2.Location = New System.Drawing.Point(271, 296)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(79, 29)
Me.Button2.TabIndex = 4
Me.Button2.Text = "閉じる"
Me.Button2.UseVisualStyleBackColor = True
'
'FormBase
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(371, 350)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.TextBox1)
Me.Controls.Add(Me.Label1)
Me.Name = "FormBase"
Me.Text = "Form1"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Button2 As System.Windows.Forms.Button
End Class
お世話になっております。
FormBaseのDesignerソースコードの
Partial Class FormBase
を
Partial Public Class FormBase
と変更したところ、エラー警告が収まりました。
これでいいのかどうか良く理解できていませんが、由として先に進みます。
お騒がせしました。