当前位置:  开发笔记 > 编程语言 > 正文

如何将表单的焦点"锁定"到特定控件?

如何解决《如何将表单的焦点"锁定"到特定控件?》经验,为你挑选了1个好方法。

如何将.net应用程序的焦点锁定到特定控件?例如,如果我有一个包含5个文本框的表单,并且我希望它们按特定顺序填写,我怎样才能阻止第1个框中的某个人从选项卡/单击到框2,或者点击"确定"或"取消"或其他任何内容?有一种简单的方法,还是我必须在适当的时候手动禁用/启用其他控件?

显而易见的解决方案(焦点丢失后重置焦点)的问题在于MSDN说你可以用这种方式锁定你的机器:

(来源:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.leave.aspx)

警告:

不要尝试从Enter,GotFocus,Leave,LostFocus,Validating或Validated事件处理程序中设置焦点.这样做可能会导致您的应用程序或操作系统停止响应.有关详细信息,请参阅"键盘输入参考"部分中的WM_KILLFOCUS主题,以及MSDN库中"关于消息和消息队列"主题的"消息死锁"部分,网址为http://msdn.microsoft.com/library.



1> Serhat Ozgel..:

处理textBox1的Leave事件.在事件处理程序内部,如果不满足条件,例如,如果用户未输入某些输入,请将焦点重置回控件.

private void textBox1_Leave(object sender, EventArgs e)
{
    if string.isNullOrEmpty(textBox1.Text)
    {
        textBox1.focus();
    }
}

为每个控件执行此操作或执行更通用的操作,如:

private void textBox_Leave(object sender, EventArgs e)
{
    TextBox textBox = sender as TextBox;
    if (string.isNullOrEmpty(textBox.Text)
    {
        textBox.focus();
    }
}

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有