【发布时间】:2010-12-16 18:42:36
【问题描述】:
我有一个 WinForm 应用程序,一个表单上有多个输入控件。在验证事件处理程序(Validating 或 Validated)中,我需要根据验证值确定接下来要激活的控件。
在 Microsoft 的 Validating 事件文档中,它指出:
注意
不要尝试从 Enter、GotFocus、Leave、LostFocus、Validating 或 Validated 事件处理程序中设置焦点。这样做可能会导致您的应用程序或操作系统停止响应。有关详细信息,请参阅“键盘输入参考”部分中的 WM_KILLFOCUS 主题,以及位于 http://msdn.microsoft.com/library 的 MSDN 库中“关于消息和消息队列”主题的“消息死锁”部分.
Form 类有一个ActiveControl 属性,允许设置要变为活动的控件,并且没有提及任何限制。经过几个小时的网络搜索,我没有找到任何其他解决方案。
从我的 Validated 事件处理程序中设置 ActiveControl 属性(而不是 Focus)是否是积极激活我想要的控件的安全方法?如果没有,有什么解决办法吗?
由于 .NET Compact Framework 没有 ActiveControl 属性,任何人都可以提出解决方案吗?
【问题讨论】:
标签: c# winforms validation focus controls