SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

C#の入力チェック実例サンプルコード

全角チェックや数値チェックなどの基本的な実装方法


ダウンロード 実行ファイル (11.5 KB)
ダウンロード ソースコード (21.7 KB)

チェックをはずせるラジオボタン

 標準のRadioButtonでは、一度マウスでクリックしチェックをしてしまうと、オペレーションではチェックをはずすことができません。そこで、マウスクリックイベントを拡張し、マウスの左クリックでチェックし、右クリックをチェックをはずすことのできるRadioButtonを作成してみます。

OnMouseDownのオーバーライド

 テキストボックスと同様に、Radiobuttonでも、オーバーライドを行って、コントロールのイベントを処理します。まず、OnMouseDownメソッドをオーバーライドします。

protected override void OnMouseDown(
                               System.Windows.Forms.MouseEventArgs e)
{
    base.OnMouseDown (e);
}

 その後、以下のプログラムを追加します。これで右クリックするとチェックをはずせるようになります。

// マウスの右クリック時にチェックをはずす
if( this.Checked && e.Button.Equals(MouseButtons.Right) )
{
    this.Checked = false;
}

ラジオボタングループが必須入力の場合

 ユーザーのオペレーションやさまざまな状況により、RadioButtonのグループが必須になることが考えられます。そこでプロパティを追加し、右クリックの有効、無効を制限できるような機能を追加します。

/// <summary> チェックを外せるかどうか </summary>
private bool canRemove = false;

/// <summary>
/// チェックを外せるかどうかを取得または設定します
/// </summary>
[Bindable(true),
Category("追加プロパティ"),
DefaultValue(true),
Description("チェックを外せるかどうか")]
public bool CanRemove
{
    get
    {
        return this.canRemove;
    }
    set
    {
        this.canRemove = value;
    }
}

 プロパティの追加に伴い、OnMouseDownのオーバーライドも少し変更します。

/// <summary>
/// OnMouseDownのオーバーライド
/// </summary>
/// <param name="e"></param>
protected override void OnMouseDown(
                                System.Windows.Forms.MouseEventArgs e)
{

    if( this.Checked 
       && e.Button.Equals(MouseButtons.Right) 
       && this.canRemove )
        this.Checked = false;

    base.OnMouseDown (e);

}

おわりに

 このように、標準のコントロールにもともとあるメソッドをオーバーライドして、少しプログラムを追加することによって、共通的な振る舞いをすることができます。その結果、コーディングの量は使用するコントロールの量に比例して減らすことができます。

 あくまで、サンプルですので、皆さんの思いつくままにやってみてはいかがでしょうか。

修正履歴

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
特集記事連載記事一覧

もっと読む

この記事の著者

高山 昌悟(タカヤマ ショウゴ)

今までは主に、Windowsアプリケーションの開発を行ってきました。最近はWebアプリケーションの開発を行っています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1083 2007/04/16 17:26

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー