控制具有相同事件类型的多个文本框
本文关键字:文本 类型 事件 控制 | 更新日期: 2023-09-27 18:30:34
我有一个 C# WPF 窗口,其中有 20 个文本框。 他们没有做任何特别的事情,我想要的只是当我去他们选择文本时。
我知道设置20个事件是公平
的private void customerTextBox_GotFocus(object sender, RoutedEventArgs e)
{
customerTextBox.SelectAll();
}
但我想知道是否有更流畅的东西
private void (genericTextBox)_GotFocus(object sender, RoutedEventArgs e)
{
(genericTextBox).SelectAll();
}
我可以在其中使用它一次,每个文本框都可以理解该事件
您可以使用
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" />
可以使用"sender"参数为多个文本框编写一个处理程序。
例:
private void textBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (sender == null)
{
return;
}
textBox.SelectAll();
}
像在示例中一样创建事件处理程序,然后将文本框的所有 GotFocus 事件指向该处理程序。
你可以像这样使用 RegisterClassHandler 方法:
EventManager.RegisterClassHandler(typeof(YourClass), TextBox.GotFocusEvent, new RoutedEventHandler((s, e) =>
{(s as TextBox).SelectAll();};
除了如上所述创建泛型处理程序之外,还可以向窗口的构造函数添加一行代码,这样就不必将 xaml 中的处理程序附加到每个文本框。
this.AddHandler(TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus));