我有一个C#WPF窗口,其中有20个文本框。他们没有做任何特别的事情,而我想要的就是当他们选择文本时。
我知道设置20个事件(例如
)是相当的private void customerTextBox_GotFocus(object sender, RoutedEventArgs e)
{
customerTextBox.SelectAll();
}
但我想知道是否有更顺畅的事情
private void (genericTextBox)_GotFocus(object sender, RoutedEventArgs e)
{
(genericTextBox).SelectAll();
}
我只能使用一次,每个文本框都能理解用户该事件
答案 0 :(得分:2)
您可以使用sender
参数,其中包含对引发事件的文本框的引用:
private void GenericTextBox_GotFocus(object sender, RoutedEventArgs e)
{
(sender as TextBox).SelectAll();
}
然后,您可以为所有文本框设置此错误处理程序:
<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" />
答案 1 :(得分:2)
您可以使用&#34;发件人&#34;为多个TextBox编写一个处理程序的参数 例如:
private void textBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (sender == null)
{
return;
}
textBox.SelectAll();
}
答案 2 :(得分:0)
像在示例中一样创建事件处理程序,然后将所有文本框的GotFocus事件指向该处理程序。
答案 3 :(得分:0)
你可以像这样使用RegisterClassHandler方法:
EventManager.RegisterClassHandler(typeof(YourClass), TextBox.GotFocusEvent, new RoutedEventHandler((s, e) =>
{(s as TextBox).SelectAll();};
答案 4 :(得分:0)
除了如上所述创建通用处理程序之外,您还可以向窗口的构造函数添加一行代码,这样您就不必将xaml中的处理程序附加到每个文本框中。
this.AddHandler(TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus));