在我的WPF
应用程序中,我在lostfocus
控件的textbox
事件中进行了一些输入验证。如果文字不符合正确的标准,我会清除textbox
中的文字。这很好。我遇到的麻烦是在查看消息框后将焦点返回到控件。例如,当我使用下面的代码时,文本框焦点方法会在关闭消息框后重新触发丢失的焦点事件。
private void TaskNameBox_LostFocus(object sender, RoutedEventArgs e)
{
... validation logic here
MessageBox.Show("Message.", "Error", MessageBoxButton.OK);
TaskNameBox.Focus();
}
我不知道为什么Focus方法会重新触发丢失的焦点事件,但我需要一种方法来在失去它之后将焦点重新放回到TaskNameBox控件上。任何建议将非常感谢。我是WPF
的新手。
答案 0 :(得分:5)
使用以下内容:
private void TaskNameBox_LostFocus(object sender, RoutedEventArgs e)
{
... validation logic here
MessageBox.Show("Message.", "Error", MessageBoxButton.OK);
Dispatcher.BeginInvoke((ThreadStart)delegate
{
TaskNameBox.Focus();
});
}
答案 1 :(得分:0)
试试这个 FocusManager.SetFocusedElement
FocusManager.SetFocusedElement(parentElement, txtCompanyID)