5298


ひとつのクリックイベントメソッドを、複数のボタンから使用したいのですが、  
ボタンによって、色コードを表示するテキストボックスが異なります。  
ですので、このメソッドの引数としてテキストボックスを渡したいと考えていますが、今のところ解決出来ておりません。  
解決方法の分かる方がいましたらご教授をお願いします。

[code]

    private void Button_Click(object sender, RoutedEventArgs e)
        {
            // [色の設定]ダイアログを表示
            System.Windows.Forms.ColorDialog colorDialog1 = new System.Windows.Forms.ColorDialog();
            if (colorDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                // 色を取得
                System.Drawing.Color col = colorDialog1.Color;
                // 色を数値から、16進数の文字列として表現させる
                string strColor = "#" +
                col.R.ToString("X2") +  // Red(赤)  を16進数2桁表示
                col.G.ToString("X2") +  // Green(緑)を16進数2桁表示
                col.B.ToString("X2");   // Blue(青) を16進数2桁表示
                // テキストボックスがボタンによって異なる
                Tテキストボックス.Text = strColor;
            }
        }
    
[/code]


CC BY-SA 3.0
2015-01-26T03:19:00.583
5294
2015-01-26T03:50:54.480
2015-01-26T03:38:23.513
3313
7626
question
c# wpf
WPF：ひとつのクリックイベントメソッドを、複数のボタンから使用したい。


senderがイベント発生元です。

[code]

    Button target = (Button)sender;
    
[/code]


CC BY-SA 3.0
2015-01-26T03:40:58.240
5297
2015-01-26T03:40:58.240
7740
5294
answer


あくまでイベントハンドラを使う場合、takさんの書かれているようにsenderからどのボタンかを判別して、内部でif/switch分岐をすることになるでしょう。

WPFを活かすという意味で、イベントハンドラの代わりにコマンドを用いるのはどうでしょうか。異なるボタンから同じコマンドに対して、それぞれ異なるパラメータを渡すことが可能です。  
`ICommand`から自前で実装しても良いですし、MVVMフレームワークを用いるとより簡単かもしれません。例えば`MVVM Light
Toolkit`では`RelayCommand`が用意されています。

[連載：WPF入門：第6回 「コマンド」と「MVVMパターン」を理解する (1/3) -
＠IT](http://www.atmarkit.co.jp/ait/articles/1011/09/news102.html)

[MVVM Light Toolkitを使ってみよう。その2 MVVMの復習 かるあ
のメモ/ウェブリブログ](http://karua.at.webry.info/201010/article_1.html)


CC BY-SA 3.0
2015-01-26T03:50:54.480
5298
2015-01-26T03:50:54.480
3313
5294
answer