在C#中调用ShowDialog(ParentForm)时会触发哪些事件

Akr*_*ron 9 c# winforms

简单的问题.我有一个MainForm和一个settingsForm.设置表单初始化一次,然后在每次用户单击按钮时显示.单击此按钮时,我需要它执行某些操作.

m_inputSettings.ShowDialog(this); //edit settings selected, so show that form
Run Code Online (Sandbox Code Playgroud)

这是调用设置表单的MainForm,它做得很好.但是每次发生这种情况我都需要SettingsForm做一些事情.目前,我无法弄清楚这个调用是否实际上触发了我可以设置处理程序的任何事件.它会触发事件吗?如果没有,是否有另一种方法可以告诉我的SettingsForm每次调用时都会做什么?

注意:在该行之后的mainform中的任何代码都不会在SettingsForm返回之前执行,但这是故意的.

谢谢.

编辑:我希望我的表单做的事情之一就是在发生这种情况时选择一个特定的控件,但似乎在表单完成加载所有内容之前这是不可能的.

Ed *_* S. 6

您可以在设置表单中覆盖OnVisibleChanged方法.确保调用base.OnVisibleChanged虽然不会搞砸任何潜在的事件观察者(以及基类在该方法中可能做的任何其他事情.)


hun*_*ind 5

FormShown事件 - 仅在第一次显示表单时引发一次。 OnPaint / OnActivate- 每次激活表单时,即使您切换到其他应用程序,这些事件也会引发,这可能是您不想做的。如果您要更改表单可见性,则可以使用OnVisibleChanged 如果您要最小化表单,则可以使用OnSizeChanged/OnLocationChanged事件。

如果没有一个适合您,请创建一个公共属性并在表单关闭/隐藏时设置为 false,并在显示之前设置为 true。OnActivate,使用此属性来完成您的任务。