2008年4月28日月曜日

[vb2005] -- 継承コントロールの作成_その1。(準備)


【目的】汎用的なコントロールの作成、利用。


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 件のコメント: