Form.Closing的WinForms UserControl版本

时间:2012-04-25 23:38:32

标签: .net vb.net winforms controls

我有一个带有子表单的MDI表单,我想将其重构为包含子控件的制表符控件的单个表单,以便远离MDI clunkiness

当看到将子表单转换为子控件(或用户控件)时,我确实看到我丢失了FormClosing事件,这是某些子表单使用的。

我可以覆盖Dispose来处理某些功能,但在某些情况下我想取消关闭事件。此外,我希望在控件关闭之前调用此事件,即使它所处的窗体未关闭,因此将控件连接到窗体的关闭事件也不是一种选择。

在控件类中是否有一种简洁的方法来复制FormClosing事件,或者在将子窗体添加到制表符控件时,是否应该将子窗体保留为窗体?

编辑:为了更清楚一点,我正在寻找一种方法在用户控件关闭之前在用户控件上引发类似ControlClosing的东西(不一定是在主机表单是关闭)以提示用户是否希望保存对其数据的更改,并允许用户选择标准是/否/取消。

我不打算覆盖托管控件的表单的关闭。

2 个答案:

答案 0 :(得分:0)

尝试ParentChanged,或可能VisibleChanged

答案 1 :(得分:0)

只要您在选项卡控件中创建子表单(我假设您为每个TagPage放置一个子表单),您可以删除整个TabPage或只删除TabPage中的对象以处理您的子表单

TabControl1.TabPages.Remove(TabPage1)

TabPage1.Controls.Remove(ChildForm)