0

我有一个 C# WPF 窗口,其中有 20 个文本框。他们没有做任何特别的事情,我想要的只是当我去选择要选择的文本时。

我知道设置 20 个事件是公平的,例如

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

但我想知道是否有更平滑的东西

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

我可以只使用一次,每个文本框都可以理解用户该事件

4

5 回答 5

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" />
于 2012-04-09T14:49:49.273 回答
2

您可以使用“sender”参数为多个文本框编写一个处理程序。
例子:

private void textBox_GotFocus(object sender, RoutedEventArgs e)
{
    TextBox textBox = sender as TextBox;
    if (sender == null)
    {
       return;
    }
    textBox.SelectAll();
 }
于 2012-04-09T14:50:19.633 回答
0

you can use RegisterClassHandler method like this:

 EventManager.RegisterClassHandler(typeof(YourClass), TextBox.GotFocusEvent, new RoutedEventHandler((s, e) =>
        {(s as TextBox).SelectAll();};
于 2012-04-09T14:59:46.357 回答
0

除了如上所述创建通用处理程序之外,您还可以在窗口的构造函数中添加一行代码,这样您就不必将 xaml 中的处理程序附加到每个文本框。

this.AddHandler(TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus));
于 2012-04-09T19:20:29.603 回答
0

像在示例中那样创建事件处理程序,然后将所有文本框的 GotFocus 事件指向该处理程序。

于 2012-04-09T14:48:54.547 回答