网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > .Net >

C# 管理多个工作簿的任务窗格

时间:2025-03-30 08:31

人气:

作者:admin

标签:

导读:CustomTaskPanes.Add方法,它自动把任务窗格添加到当前的工作簿上去了。怎样才能将工作簿对象和任务窗格关联起来? 方法是: ThisAddIn.cs中创建一个字典管理任务窗格 private Dictionarylt;str...

CustomTaskPanes.Add方法,它自动把任务窗格添加到当前的工作簿上去了。怎样才能将工作簿对象和任务窗格关联起来?
方法是:
ThisAddIn.cs中创建一个字典管理任务窗格

private Dictionary<string, CustomTaskPane> _createdPanes = new Dictionary<string, CustomTaskPane>();

    /// <summary>
    /// 按名称获取任务窗格(如果当前excel窗口存在,则返回现有实例,否则使用taskPaneCreatorFunc创建一个)。
    /// </summary>
    /// <param name="taskPaneId">一个唯一字符串来标识任务窗格</param>
    /// <param name="taskPaneTitle">任务窗格的标题</param>
    /// <param name="taskPaneWidth">任务窗格的宽度</param>
    /// <param name="taskPaneDockPosition">任务窗格的停靠位置</param>
    /// <param name="taskPaneCreatorFunc">构造任务窗格的函数。</param>
    public CustomTaskPane GetTaskPane(
               string taskPaneId,
               string taskPaneTitle,
               int taskPaneWidth,
               Office.MsoCTPDockPosition taskPaneDockPosition,
               Func<UserControl> taskPaneCreatorFunc
           )
    {
        //string key = string.Format("{0}({1})", taskPaneId, Globals.ThisAddIn.Application.Hwnd);
        string key = $"{taskPaneId}({Globals.ThisAddIn.Application.Hwnd})";

        if (!_createdPanes.ContainsKey(key))
        {
            // 忽略第三个参数,默认在当前窗口新建一个任务窗格
            var taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(taskPaneCreatorFunc(), taskPaneTitle);
            taskPane.Width = taskPaneWidth;
            taskPane.DockPosition = taskPaneDockPosition;
            _createdPanes[key] = taskPane;
        }
        return _createdPanes[key];
    }

在Ribbon1.cs中设置一个按钮 调用 并显示或隐藏
private void button1_Click(object sender, RibbonControlEventArgs e)
{
//Globals.ThisAddIn.myPane.Visible = ! Globals.ThisAddIn.myPane.Visible;
{
//调用自定义任务窗格方法来获取或创建任务窗格
var taskpane = Globals.ThisAddIn.GetTaskPane(
"A",
"设置",
200,
Office.MsoCTPDockPosition.msoCTPDockPositionLeft,
() => new UserControl1()
);
taskpane.Visible = !taskpane.Visible;
}

    }
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信