none
コントロール自分のイベント内コントロールNameを省略する方法ありますか RRS feed

  • 質問

  •  

    こんにちは

     

    下記の書き方が煩雑のため、コントロールのイベント内で自らのNameを省略できないでしょうか。

     

    例:

    下記のソースがあります。

     

    C#
            private void btnCalc_MouseMove(object sender, MouseEventArgs e)
            {
                this.btnCalc.BackColor = Color.Blue;
                this.btnCalc.ForeColor = Color.White;
            }

     

     

     

    btnCalc自分のイベントなので、なんらかの方法で下記のように書けないでしょうか。

    C#

            private void btnCalc_MouseMove(object sender, MouseEventArgs e)
            {
                BackColor = Color.Blue;
                ForeColor = Color.White;
            }

     

     

     

    ありがとうございます。

    2007年10月24日 12:12

回答

  • 省略はできないと思いますが、このようには書けると思います。
    複数のコントロールから同じメソッドを呼び出すときとかには使えると思います。

            private void btnCalc_MouseMove(object sender, MouseEventArgs e)
            {

                Button btn = (Button)sender; // ボタン型にキャスト
                btn.BackColor = Color.Blue;
                btn.ForeColor = Color.White;
            }

    2007年10月25日 5:19

すべての返信

  •  Jia Lu さんからの引用

    btnCalc自分のイベントなので、なんらかの方法で下記のように書けないでしょうか。

    おそらくこれはFormクラスの中のコードですよね。

    この場合「自分」「this」はFormになります。

    btnCalcはあくまでもFormのメンバです。参照しなければなりません。

     

    Buttonの派生クラスの中のコードでしたら、

    Control.OnMouseMove メソッド

    http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.onmousemove(VS.80).aspx

    のサンプルにあるようにthisを省略できるので、プロパティだけで書けると思いますが。
    2007年10月24日 12:58
  • 省略はできないと思いますが、このようには書けると思います。
    複数のコントロールから同じメソッドを呼び出すときとかには使えると思います。

            private void btnCalc_MouseMove(object sender, MouseEventArgs e)
            {

                Button btn = (Button)sender; // ボタン型にキャスト
                btn.BackColor = Color.Blue;
                btn.ForeColor = Color.White;
            }

    2007年10月25日 5:19
  • 真剣に書きますが、省略してわざわざ可読性を悪くする意図がわからないです。

    2007年10月25日 5:51