C# 离开控件时,我如何再次赋予该控件焦点?

C# 离开控件时,我如何再次赋予该控件焦点?,c#,forms,focus,controls,C#,Forms,Focus,Controls,我有C形式的文本框。用户输入数据,然后当他们离开控件时(几乎总是通过点击Tab键),我检查数据以确保其有效。如果无效,我想突出显示他们的文本,这样他们就可以立即修复它,而不必单击它 现在,控制。离开,我验证他们的输入。这个很好用。然而,由于他们点击了Tab,在他们关闭错误消息之后,它会继续进入下一个对象,即使我有((TextBox)sender).Focus() 如何在窗体选项卡之后将上行链路激发到下一个控件 尝试使用文本框上的LostFocus事件再次聚焦它您可能需要查看Control.Cau

我有C形式的文本框。用户输入数据,然后当他们离开控件时(几乎总是通过点击Tab键),我检查数据以确保其有效。如果无效,我想突出显示他们的文本,这样他们就可以立即修复它,而不必单击它

现在,控制。离开,我验证他们的输入。这个很好用。然而,由于他们点击了Tab,在他们关闭错误消息之后,它会继续进入下一个对象,即使我有(
(TextBox)sender).Focus()


如何在窗体选项卡之后将上行链路激发到下一个控件

尝试使用
文本框上的
LostFocus
事件再次聚焦它

您可能需要查看Control.CausesValidation属性

您可以在用户离开焦点之前验证控件,而不是等待焦点自身移动

下面是控制的MSDN文档。验证事件,在获得/失去控制焦点时,可以很好地安排事件序列

注意Control.Validating和Control.Validated是如何在Control.LostFocus之前启动的。您可以在允许用户失去文本框焦点之前执行验证步骤

stackoverflow.com上还有一个非常好的答案,其中概述了如何执行此操作:

如果您处理事件,将e.Cancel设置为true将阻止焦点更改的发生

请注意,此方法还将停止按钮的工作,因此您可能需要在某些按钮上设置为false

您还需要在主窗体上使用以下代码段才能使“关闭”按钮正常工作:

protected override void OnFormClosing(FormClosingEventArgs e) {
    e.Cancel = false;
    base.OnFormClosing(e);
}