【问题标题】:In .NET Windows Forms why use Activated and Deactivate在 .NET Windows 窗体中为什么要使用 Activated 和 Deactivate
【发布时间】:2014-11-03 18:07:37
【问题描述】:

在 .NET Windows 窗体中,如果我们需要添加在显示窗体或隐藏窗体时执行的代码,我们会将代码添加到 Activated 和 Deactivate 事件处理程序,而不是 GotFocus 和LostFocus 事件处理程序。为什么?

在 .NET Windows 窗体中,如果调用 Hide 方法时窗体尚未加载到内存中,那么 Hide 方法有什么作用?

【问题讨论】:

  • 我相信您第一个问题的答案是只有一个控件具有焦点,因此您的表单可以“激活”,而表单中的文本框实际上具有焦点。

标签: .net windows forms


【解决方案1】:

输入焦点与被激活的表单是不同的概念。应用程序中的单个控件可以随时获得焦点,因为这决定了键盘输入将被发送到哪里。这意味着即使您的表单确实获得了焦点,当单击表单中的子控件(例如文本框)时,它也会失去焦点。因此,我们在表单上设置了单独的 Activated/Deactivated 事件来跟踪它何时是活动窗口。

在表单上调用 Hide() 只是将 Visible 属性设置为 false,因此在已经不可见的表单上调用 Hide() 将无效。

【讨论】:

  • 如果表单没有加载,当你调用 show() 时它会加载表单并显示它。为什么同样的情况,它不会先加载,然后设置为不可见?
  • 我想在显示之前需要加载一个表单,而如果它没有显示则不需要加载它,所以他们没有(我刚刚自己测试过以确认)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多