TabControl中内嵌窗体,如何触发内嵌窗体的关闭事件?

    无论我们再使用Winform中的TabControl 还是第三方的插件的,如DotnetBar、DevExpress等等,我们都可以在将一个窗体嵌入到TabControl的TabItem中的TabControlPanel中,具体的实现不是这里讲解的重点,如有需要可以发邮件到我的邮箱中获取代码。

在通常的操作中,我们只要触发TabItem上的关闭按钮就可以关闭当前的TabItem,但是关闭TabItem的时候,并没有触发内嵌窗体的关闭窗体事件,有很多时候我们都需要在关闭内嵌窗体的事件中释放对象等等操作。但是TabItem也没有关闭事件,同时TabItem中的TabControlPanel里也没有关闭事件,其实有也不会触发的。其实在TabControl中有TabItemClose事件,我们可以在这个事件中经行内嵌窗体关闭事件的处理,即,在关闭TabItem的中同时也触发内嵌窗体的关闭事件。
    我们首先要完成的准备工作就是使用C#中提供的键值类库System.Collections.Generic.Dictionary<>保存窗体的Name属性值和对应的TabItem的Text属性(即显示在TabItem上的内容),实例代码如下:


首先声明变量:


private Dictionary<string,string> tablItem = new Dictionary<string,string>();


然后保存对应的属性值:


if (!tablItem.ContainsKey(tabName))
{

tablItem.Add(tabName, form.Name);

}


接下来我们在TabControl中的TabItemClose事件中经行处理:


private void superTabControl1_TabItemClose(object sender, SuperTabStripTabItemCloseEventArgs e)

{

string slectedTab = this.superTabControl1.SelectedTab.Text;//获取当前TabItem的显示文本

string controlName=null;

tablItem.TryGetValue(slectedTab,out controlName);//获取当前TabItem中内嵌的Form的Name属性值

Form frm = this.superTabControl1.SelectedPanel.Controls.Find(controlName, false)[0] as Form;//获取内嵌的Form对象

frm.Close(); //调用form的close事件,即触发了内嵌窗体的关闭事件

}

结束。如果有什么问题可以发邮件。


   
   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪_无痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值