2012-04-09 12 views
0

Ich habe ein C# -WPF-Fenster, in dem ich 20 Textfelder habe. Sie machen nichts besonderes, und alles, was ich will, ist, wenn ich sie für den Text wählte, der ausgewählt werden soll.Mehrere Textfelder mit demselben Ereignis steuern Typ

Ich weiß, es ist ziemlich jeder 20 Veranstaltungen einzurichten wie

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

aber ich frage mich, ob noch etwas glatter wie

private void (genericTextBox)_GotFocus(object sender, RoutedEventArgs e) 
{ 
    (genericTextBox).SelectAll(); 
} 

, wo ich nur dieses eine Mal verwenden können, und jede Textbox versteht um dieses Ereignis zu verwenden

Antwort

0

Erstellen Sie Ihren Ereignishandler wie in Ihrem Beispiel und zeigen Sie dann das gesamte GotFocus-Ereignis Ihres Textfelds auf diesen Handler.

2

Sie sender Argument verwenden können, die den Verweis auf das Textfeld enthält, die das Ereignis ausgelöst hat:

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

Sie können dann diese Fehlerhandler für alle Textfelder festgelegt:

<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

Sie verwenden können der "sender" -Parameter zum Schreiben eines Handlers für mehrere TextBoxen.
Beispiel:

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

perfekt, danke (und Damir Arh auch) – nikolifish

0

Sie RegisterClassHandler Methode wie folgt verwenden:

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

Neben der Erstellung der generischen Handler, wie oben erwähnt, können Sie auch eine einzige Zeile Code zu Ihrem Fenster Konstruktor, so dass Sie hinzufügen muss den Handler in XAML nicht an jede Textbox anhängen.

this.AddHandler(TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus)); 
Verwandte Themen