我有一个这样定义的UserControl:
UserControl
TextBox
Button (Clear)
我在
GotFocus
上有一个UserControl
处理程序,因此只要它得到焦点,它就会调用TextBox.Focus()
。我遇到的问题是,如果单击“清除”按钮,它将清除文本,然后重新聚焦到文本框,从而触发控件上的两个GotFocus事件。我希望这可以充当:一场GotFocus活动
一个GotFocus事件(按钮),一个LostFocus事件(按钮),一个GotFocus事件(文本框)
我玩
FocusManager.IsFocusScope
无济于事。在我致电LostFocus
之前,是否还有办法触发手动Textbox.Focus
? 最佳答案
在您的GotFocus事件中,您可以检查鼠标是否在清除按钮上以及是否按下了鼠标左键,在这种情况下,您可以忽略对TextBox.Focus():
的调用
private void UserControl_GotFocus(object sender, RoutedEventArgs e)
{
if ((this.clearButton.IsMouseOver && Mouse.LeftButton == MouseButtonState.Pressed) == false)
{
this.textBox.Focus();
}
}
关于c# - 自定义用户控件的焦点控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21411999/