wpf - 如何从同一控件的丢失焦点事件中将焦点返回到 WPF 中的控件?

标签 wpf

在我的 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 .

最佳答案

使用它如下:

private void TaskNameBox_LostFocus(object sender, RoutedEventArgs e)

{

    ... validation logic here

    MessageBox.Show("Message.", "Error", MessageBoxButton.OK); 

    Dispatcher.BeginInvoke((ThreadStart)delegate
            {
                TaskNameBox.Focus();
            });
 }

关于wpf - 如何从同一控件的丢失焦点事件中将焦点返回到 WPF 中的控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30466802/

相关文章:

wpf - Powershell WPF StackPanel无法正确更新

c# - 如何在每个wpf/MVVM组合框行上显示2个字符串?

c# - 垂直旋转的文本 block 占据整个宽度,就好像它是水平的一样

c# - 为什么我的 WPF 单选按钮没有与中心垂直对齐?

c# - TextBox 变空时 UpdateSourceTrigger 不起作用

c# - 从 ByteString 识别光栅(jpg、png 等)或 svg 文件格式

c# - 在 WPF 数据网格中选择项目时如何显示按钮?

c# - 如何覆盖 ControlTemplate 中的属性?

c# - 用于识别网址的正则表达式

wpf - 提取正在运行的WPF应用程序的WPF内容模板