ユーザーコントロールを作成する(3)

今回は、前回作成したコントロールに公開イベントを追加します。

作成したコントロールにはチェックボックスが付いています。このチェックボックスのチェック状態が変更されたときに発生するCheckedChangedイベントを追加してみましょう。

まずはイベントを宣言します。

public event EventHandler<EventArgs> CheckedChanged;

次に、公開イベントの追加を下記のように行います。

ここで[Browsable(true)]とすることで、プロパティウィンドウの雷マークをクリックしたときのイベント一覧に表示されるようになります。また、[Description()]を使用することで、イベントの説明を表示させることができます。

/// <summary>
/// チェック状態が変更された場合に発生します
/// </summary>
/// <param name="e"></param>
[Browsable(true)]
[Description("チェック状態が変更されるときに発生するイベントです")]
protected virtual void OnCheckedChanged(EventArgs e)
{
    EventHandler<EventArgs> eventHandler = CheckedChanged;

    if (eventHandler != null)
    {
        eventHandler(this, e);
    }
}

最後に、イベントを発生させる方法について押さえておきましょう。
作成したいイベントはいつ発生させたらよいでしょうか?ここでは当然、チェック状態が変わったときですよね。
ということで、Checkedプロパティで行うこととしました。set {~}の中を見ていただきたいのですが、OnCheckedChangedを呼んで、イベントを発生させています。(ここはチェック状態セットされるときに実行される場所ですよね。なので、ここでイベントを発生させているというわけです)

[Browsable(true)]
[Description("テキスト入力エリアの表示/非表示を切り替えます。")]
[Category("動作")]
public bool Checked 
{
    get
    {
        return checkBox1.Checked;
    }
    set
    {
        checkBox1.Checked = value;

                    
        // チェック状態が変更されたのでCheckedChangedイベントを発生させる
        OnCheckedChanged(EventArgs.Empty);
    }
}

ユーザーコントロールは特別難しいモノではありません。アイデア次第では、非常に便利なコントロールを作成することが可能なので、是非チャレンジしてみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です