我在开发我的应用程序时非常幸运......直到现在。
我的应用程序的主窗体是一个 MDI 父窗体,直到今晚我才想到在我的测试中添加任何 MDI 子窗体。
令我惊讶的是,MDI 父级现在似乎永远不会“获得焦点”。永远不会调用 Focus 事件和 OnFocus 方法!我的意思是......它看起来很专注,但代码内的聚焦事件/方法都不起作用。相反,MDI 子级报告焦点。
我该如何解决这个问题?
最佳答案
这是设计使然。窗体充当其他窗口、控件的容器。控件获得焦点,用户与按钮或文本框进行交互。只有当窗体没有任何控件时,它才会获得焦点,只是因为没有别的东西可以得到它。一旦您在 MDI 子窗体上放置控件,同样的事情就会发生。或者使用 Panel 或 UserControl,其他容器控件类型。
表单具有 Activate 和 Deactivate 事件。 ActiveForm 告诉您当前处于事件状态。请注意活跃和专注之间的区别。
关于c# - MDI Form 有焦点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4522525/