在离开一个控件时,我如何才能再次关注该控件

本文关键字:控件 离开 一个 | 更新日期: 2023-09-27 18:24:02

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

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

我如何让上面的行在表单选项卡之后触发到下一个控件。

在离开一个控件时,我如何才能再次关注该控件

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

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.causesvalidation(v=vs.110).aspx

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

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

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating(v=vs.110).aspx

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

stackoverflow.com上也有一个很好的答案,它概述了如何做到这一点:C#正在验证winforms 上文本框的输入

如果处理Control.Validing事件,将e.Cancel设置为true将阻止焦点的更改。

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

您还需要主窗体上的以下代码段来允许关闭按钮工作:

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

尝试使用TextBox上的LostFocus事件再次聚焦