2012-04-09 15 views
0

私は20のテキストボックスを持つC#WPFウィンドウを持っています。彼らは特別なことはしません、そして、私が望むのは、私が選択されるテキストのためにそれらを行ったときです。複数のテキストボックスを同じイベントタイプで制御する

私はそれが

private void customerTextBox_GotFocus(object sender, RoutedEventArgs e) 
{ 
    customerTextBox.SelectAll(); 
} 

のような20回のイベントを設定するにはかなり各知っているけど

、私は一度だけこれを使用することができ、それぞれのテキストボックスが理解
private void (genericTextBox)_GotFocus(object sender, RoutedEventArgs e) 
{ 
    (genericTextBox).SelectAll(); 
} 

のようなスムーズなtheresの何かあれば、私は思ったんだけどユーザーにそのイベント

答えて

0

例で行ったようにイベントハンドラを作成し、すべてのテキストボックスのGotFocusイベントをそのハンドラにポイントします。あなたが使用することができます

<TextBox x:Name="textBox1" GotFocus="GenericTextBox_GotFocus" /> 
<TextBox x:Name="textBox2" GotFocus="GenericTextBox_GotFocus" /> 
<TextBox x:Name="textBox3" GotFocus="GenericTextBox_GotFocus" /> 
<TextBox x:Name="textBox4" GotFocus="GenericTextBox_GotFocus" /> 
2

あなたは、イベントを発生させたテキストボックスへの参照を含むsender引数を使用することができます複数のTextBoxに1つのハンドラを書き込むための "sender"パラメータ
例:あなたはこのようRegisterClassHandlerメソッドを使用することができます

private void textBox_GotFocus(object sender, RoutedEventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 
    if (sender == null) 
    { 
     return; 
    } 
    textBox.SelectAll(); 
} 
2

:あなたは、すべてあなたのテキストボックスにこのエラーハンドラを設定することができます

private void GenericTextBox_GotFocus(object sender, RoutedEventArgs e) 
{ 
    (sender as TextBox).SelectAll(); 
} 

+0

完璧、ありがとう(とDamir Arhも同様) – nikolifish

0

:前述のように、一般的なハンドラを作成することに加え

EventManager.RegisterClassHandler(typeof(YourClass), TextBox.GotFocusEvent, new RoutedEventHandler((s, e) => 
     {(s as TextBox).SelectAll();}; 
0

、あなたもあなたのように、あなたのウィンドウのコンストラクタにコードの行を追加することができます各テキストボックスにxamlのハンドラを付ける必要はありません。

this.AddHandler(TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus)); 
関連する問題