2012-04-25 60 views
0

我有一个MDI窗体,我想用包含子控件的选项卡控件重构为一个窗体,以便从MDI clunkiness移开。WinForms UserControl版本的Form.Closing

当看到将子窗体转换为子控件(或usercontrols)时,我确实发现我会失去某些子窗体使用的FormClosing事件。

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

是否有一种干净的方式来重现控件类中的FormClosing事件,或者当我将它们添加到选项卡控件时,是否应将子窗体保留为窗体?

编辑:要成为一个更加清楚一点,我正在寻找一种方法来提高像ControlClosing上的用户控件之前它关闭(不一定是当主机形式被关闭),以提示用户如果他们希望保存对其数据的更改并允许用户选择标准是/否/取消。

我不想重写承载控件的窗体的关闭。

+0

端了不离不弃,MDI的形式和使用Infragistics的TabbedMDIManager控制来作为漂亮的标签界面,但尼克的回答是这样,我会去,如果我决定手动创建标签式界面儿童控制。 – MCattle 2012-04-26 23:10:42

回答

0

只要你创建的标签控制你的孩子的形式(我假设你把一个子窗体每个TagPage),您可以删除整个TabPage的或只是在TabPage的对象来处理你的孩子形式

TabControl1.TabPages.Remove(TabPage1) 

TabPage1.Controls.Remove(ChildForm) 
+0

我希望有一些内部的子控件类(实际上是我的子窗体控件从其派生的基类),但这可能是我可能不得不询问子控件是否存在未保存数据的一点。 – MCattle 2012-04-26 06:44:44

+0

然后你可能需要**'Me.Parent.Controls.Remove(Me)** – Nick 2012-04-26 06:50:07

相关问题