马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
CustomTaskPanes.Add方法,它自动把任务窗格添加到当前的工作簿上去了。怎样才能将工作簿对象和任务窗格关联起来?
方法是:
ThisAddIn.cs中创建一个字典管理任务窗格
private Dictionary _createdPanes = new Dictionary();- /// <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;
}免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|