【目的】汎用的なコントロールの作成、利用。
01.『Windowsコントロールライブラリ』で新規作成する。
02.『UserControl1』が作成されるので、「コードを表示」する。
03.コードは以下のようになっている
Public Class UserControl1
End Class
04.下記のように継承コードを一文追加する。
(下記はラベルコントロールの継承)
Public Class UserControl1
Inherits System.Windows.Forms.Label ' ← Inherits = 継承
End Class
05.すると、「System.Windows.Forms.Label」の下に警告の波線が表示される。
06.この一文にカーソルを当てると、赤丸感嘆符と以下のようなメッセージが表示される。
「クラス 'UserControl1' に指定された基本クラス 'System.Windows.Forms.Label' は、
その他の partial 型の 1 つである基本クラス 'System.Windows.Forms.UserControl' と
異なることはできません。」
07.このエラーを解消するために、赤丸感嘆符にカーソルを当ててクリックする。
08.以下の選択肢がリンクで表示される。
・System.Windows.Forms.Label から継承するために UserControl1 を変更します。
・System.Windows.Forms.UserControl から継承するために UserControl を変更します。
09.「System.Windows.Forms.Label から継承するために UserControl1 を変更します。」をクリックする。
10.すると、エラー一覧に次のエラーが表示される。
説明 :'AutoScaleMode' は 'ソリューション名.UserControl1' のメンバではありません。
ファイル :UserControl1.Designer.vb
行 :26
列 :9
プロジェクト:(プロジェクト名)
11.このエラーをダブルクリックする。
12.エラーの箇所がエディタに表示される。
このエラーは『UserControl1.Designer.vb』にあるので、このファイルが開く。
13.すると、26行目の「Me.AutoScaleMode」の下に警告の波線が表示されている。
14.この一文をコメントアウト、もしくは削除する。
15.「UserControl1.Designer.vb」を保存して、閉じる。
16.これで準備完了。後は好きにプログラムる。
※ 「10」のエラーや「05」のエラーの理由。
プロジェクト作成すると、最初は「System.Windows.Forms.UserControl」を
継承して作成されており、自動生成されるデザイン定義ファイル「~.Designer.vb」
も最初は「Inherits System.Windows.Forms.UserControl」と記載されている。
併せて、System.Windows.Forms.UserControlのプロパティ設定が記載されている。
今回のエラーは「~.Designer.vb」に記載されていたUserControlのプロパティである
「Me.AutoScaleMode」が、「System.Windows.Forms.Label 」に互換しない
(Label のプロパティでない)ために起こった。
「~.Designer.vb」ファイルは、「「Inherits ・・・」の部分を修正してくれても、
このプロパティのところは自動修正できないらしい。。。
0 件のコメント:
コメントを投稿