Form永远不会发生OnEnter,OnLeave,OnGotFocus和OnLostFocus事件

时间:2019-03-20 15:22:33

标签: c# .net winforms

我已经编写了一个测试程序,以尝试了解Form和UserControl的某些事件。 我打开和关闭该应用程序,MyFakeForm从未发生databases::db_name: 'DB_PLACEHOLDER' OnEnterOnLeaveOnGotFocus事件。 为什么不呢?

OnLostFocus

2 个答案:

答案 0 :(得分:2)

这是因为窗体通常不会获得焦点,但是窗体上的控件却会得到焦点。表单是否完整包含控件?您可以单击表单本身,而不单击表单上的控件吗?

我认为,Activated / DeActivated事件可能更多。
每当表单变为活动状态或另一个表单处于活动状态时,它们都会触发。

答案 1 :(得分:0)

我可以通过签名(EventArgs eventArgs)告诉您您自己编写了这些签名。如果VS为您完成了任务,那么它们将是“((对象发送者,EventArgs e)”)

在显示[设计]窗体的情况下,在属性窗口中选择闪电图标。双击要为其设置通知的事件,然后让Visual Studio为您进行连接。 enter image description here

这里没有魔术。.您还可以手动创建委托(事件通知)。要查看Visual Studio在做什么,请查看MyFakeForm.Designer.cs,然后可以看到如何分配事件。

祝你好运! :)