![]() ![]() ![]() |
![]() |
||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||
続いて、作成したExtendedNumericUpDown型のコントロールをフォームに配置してみましょう。 前回は、コントロールとフォームを別プロジェクトで別アセンブリにして、テストしました。 今回は、同じプロジェクトで同一アセンブリにして、配置してみます。 この場合、実際にコントロールを出荷するときには、テスト用のフォームを外してコンパイルし直す必要があります。 また、コントロールとテスト用のフォームが同じプロジェクトにある場合は、 フォームにツールボックスからコントロールを貼ることはできません。 そのため、コードで初期化などをする必要があるのですが、 NumericUpDownの初期化は複雑なので、注意が必要です。 このような場合、ひとまず基底クラスのNumericUpDownをフォームに配置し、 自動生成されたコードを修正することで、初期化に手を煩わすことがなくなります。 ただし、コントロールとフォームが別プロジェクトになっている場合は、前回説明した、 ツールボックスに追加する方法をお勧めします。 では、コードエディタで、自動生成されたコードを修正してみましょう。 修正する箇所は、以下の部分です。 private NumericUpDown numericUpDown1; (略) this.numericUpDown1 = new NumericUpDown(); 上記部分を以下のように修正します。 private ExtendedNumericUpDown numericUpDown1; (略) this.numericUpDown1 = new ExtendedNumericUpDown(); 再びデザイン画面に戻り、コントロールを選択して、右クリックすると表示されるショートカットメニューから [プロパティ]を選択し、プロパティウィンドウを表示します。 プロパティウィンドウに、先ほど指定したクラス名が表示されていることを確認します(図5)。 図5:NumericUpDownクラスの派生クラス(ExtendedNumericUpDownクラス) ![]() 次に新しく追加したイベントに対して、イベントハンドラを登録してみましょう。 前述のKeyPressイベントなど標準のイベントのイベントハンドラの登録と同様、 プロパティウィンドウでイベント一覧アイコンをクリックして、イベントのプロパティを表示します。 先ほど作成した独自のイベントが、「その他」カテゴリに追加されているので(図6)、 ダブルクリックし、イベントハンドラの雛形を自動生成します。 図6:UpDownイベント(独自イベント) ![]() 今回はテストなのでメソッドの中身は、イベントハンドラに到達していることを確認する 単純なコードにします(リスト4)。 Up/Downボタンが押されたときに、その由を示すメッセージボックスを表示するだけのコードです。 リスト4:UpDownイベントのハンドラ
完成したら、[F5]キーを押してデバッグを開始し、イベントが有効に働いているかどうか確認してみてください。 |
||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||
先ほど、自作したイベントが「その他」カテゴリに入っていると説明しましたが、 イベントが表示されるカテゴリを変更することも可能です。 また、標準のイベントでは、イベントの内容説明がプロパティウィンドウ下部に表示されます。 せっかくカスタムコントロールを作ったので、独自イベントにも、カテゴリ名と説明を追加してみましょう。 情報の付加に関しては、CategoryAttributeと、DescriptionAttributeを使用します。 実際に、CategoryAttributeとDescriptionAttributeを、UpDownイベントに付加したコードがリスト5です。 リスト5:カテゴリ情報と、説明を付加したイベント
CategoryAttributeのカテゴリは、自由に作ることも可能ですが、混乱を避けるために、 なるべくデフォルトのカテゴリを使用したほうがいいでしょう。 定義されているカテゴリの一覧を表1に示します。 表1:カテゴリとその意味
Attributeを付加したら、一旦コンパイルし、再びプロパティウィンドウから、イベントを表示してみます。 図6と比較すると、カテゴリが変更され、説明が追加されていることがわかります(図7)。 図7:変更されたカテゴリと、追加された説明 ![]() |
||||||||||||||||||||||||||||||||
ページトップへ![]() |
![]() |
||
今回は、イベントハンドラの登録方法と、独自のイベントの作成方法について説明しました。 解説に使用したNumericUpDownのように、欲しいイベントがみつからない標準コントロールは結構あります。 自分の欲しいイベントを追加することができれば、標準コントロールの利用に幅が出ます。 かゆいところに手の届く自分専用のコントロールを作ってみてはいかがでしょうか? |
||
前へ | ページトップへ | 次へ![]() |