You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Infragistics C# WinForms:点击表单区域或失焦时关闭指定标签

多表单场景下关闭指定Infragistics标签的实现方案

一、点击任意表单区域关闭"DecorDesign"标签

实现思路

封装通用的标签关闭逻辑,为所有打开的表单绑定鼠标点击事件,触发时执行关闭操作。

代码实现

  1. 通用关闭方法
private void CloseDecorDesignTab()
{
    // 替换为你的UltraTabControl实例名称
    var ultraTabControl = ultraTabControl1;
    var targetTab = ultraTabControl.Tabs.Cast<UltraTab>()
        .FirstOrDefault(tab => tab.Text.Equals("DecorDesign", StringComparison.OrdinalIgnoreCase));
    
    if (targetTab != null)
    {
        ultraTabControl.Tabs.Remove(targetTab);
        targetTab.Dispose(); // 释放标签资源
    }
}
  1. 为表单绑定点击事件
    如果所有表单基于同一基类,可在基类的Load事件中统一绑定;若为独立表单,在各自初始化代码中添加:
// 在Form的构造函数或Load事件中
this.MouseClick += (sender, e) => CloseDecorDesignTab();

二、通过标签失去焦点关闭"DecorDesign"标签

方案1:监听标签失焦事件

利用Infragistics UltraTabControl的TabLostFocus事件,当"DecorDesign"标签失去焦点时直接关闭。

// 窗体初始化时绑定事件
ultraTabControl1.TabLostFocus += UltraTabControl1_TabLostFocus;

// 事件处理器
private void UltraTabControl1_TabLostFocus(object sender, TabEventArgs e)
{
    if (e.Tab.Text.Equals("DecorDesign", StringComparison.OrdinalIgnoreCase))
    {
        var tabControl = sender as UltraTabControl;
        tabControl?.Tabs.Remove(e.Tab);
        e.Tab.Dispose();
    }
}

方案2:监听标签切换事件

当用户切换到其他标签时,检查并关闭"DecorDesign"标签,适合需要确保该标签仅在激活状态保留的场景。

// 窗体初始化时绑定事件
ultraTabControl1.TabSelectionChanged += UltraTabControl1_TabSelectionChanged;

// 事件处理器
private void UltraTabControl1_TabSelectionChanged(object sender, TabSelectionChangedEventArgs e)
{
    var tabControl = sender as UltraTabControl;
    if (tabControl == null) return;
    
    var targetTab = tabControl.Tabs.Cast<UltraTab>()
        .FirstOrDefault(tab => tab.Text.Equals("DecorDesign", StringComparison.OrdinalIgnoreCase));
    
    // 新选中的不是目标标签,且目标标签存在时关闭
    if (targetTab != null && e.NewSelectedTab != targetTab)
    {
        tabControl.Tabs.Remove(targetTab);
        targetTab.Dispose();
    }
}

注意事项

  • 确保UltraTabControl实例引用正确,若为多文档界面(MDI),需根据实际层级获取对应的标签控件。
  • 若涉及跨线程操作UI,需通过Invoke方法切换到主线程执行关闭逻辑。

内容的提问来源于stack exchange,提问作者Divya Muruganantham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:55:00