问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C# excel addin如何实现Ribbon上一个按钮显示一个UserControl?

发布网友 发布时间:2022-05-16 17:36

我来回答

1个回答

热心网友 时间:2023-11-07 10:56

得把uc 添加到CustomTaskPaneCollection 中才行
给你一个参考:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Word = Microsoft.Office.Interop.Word;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Word;
using Microsoft.Office.Tools;
namespace FinWordHelper
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.DocumentOpen += Application_DocumentOpen;
this.Application.DocumentChange += Application_DocumentChange;
}
void Application_DocumentChange()
{
FinPaneManager.Instance.CollectWordPanes();
}

void Application_DocumentOpen(Word.Document Doc)
{
FinPaneManager.Instance.CollectWordPanes();
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO 生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}

#endregion
}
#region FinPaneManager
public class FinPaneManager
{
private FinPaneManager()
{
custPanes = Globals.ThisAddIn.CustomTaskPanes;
}
private static FinPaneManager m_Instance = new FinPaneManager();
public static FinPaneManager Instance
{
get { return m_Instance; }
}
private CustomTaskPaneCollection custPanes;
public CustomTaskPane GetFinWordFormatPane()
{
Word.Window window = Globals.ThisAddIn.Application.ActiveWindow;
foreach (CustomTaskPane ctp in custPanes)
{
if (ctp.Title == "Fin格式化工具" && ctp.Window == window)
{
return ctp;
}
}
var cp = custPanes.Add(
new WordFormatter(),
"Fin格式化工具",
window
);
cp.Width = 250;
return cp;
}
public CustomTaskPane GetFinWordCheckPane()
{
Word.Window window = Globals.ThisAddIn.Application.ActiveWindow;
foreach (CustomTaskPane ctp in custPanes)
{
if (ctp.Title == "拼写检查" && ctp.Window == window)
{
return ctp;
}
}
var cp = custPanes.Add(
new WordSpellCheck(),
"拼写检查",
window
);
cp.Width = 250;
return cp;
}
public void CollectWordPanes()
{
for (int i = custPanes.Count - 1; i >= 0; i--)
{
if (custPanes[i].Window == null)
{
custPanes.RemoveAt(i);
}
}
}
}
#endregion
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;
namespace FinWordHelper
{
public partial class CustomRibbon //按钮调用在这里
{
private void CustomRibbon_Load(object sender, RibbonUIEventArgs e)
{
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
FinPaneManager.Instance.GetFinWordFormatPane().Visible = true;
}
private void button2_Click(object sender, RibbonControlEventArgs e)
{
FinPaneManager.Instance.GetFinWordCheckPane().Visible = true;
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...其他人都无问题,确定网络连接无问题,请问是什么原因? 描写花朵从花蕾到开放的句子 描写花蕾的优美句子 ...毒毛和鲜艳色斑,一般食虫鸟不敢捕食,这在生物学上属于…( )A.保护... 安徽名人出身地 山东中专学校有哪些? 山东现代职业学院毕业是本科还是大专还是高职? 我春考考了374我不知道报哪个学校 山东现代学院中专部好不好 为什么我号卖了100元藏宝阁待审核金就40元 是咋么回事呀 锦绣未央的刘长乐是谁演的 美泰有几个大区 美泰公司的其他品牌 Excel中如何筛选这样的表格中班别为3的所有学生名字,而且保留表头? 聚合物电池起鼓是什么原因 刘长乐的介绍 美泰在中国的分布? 聚合物电池卷芯的主要组成部分 春节介绍英文版 新年英语小报,要有翻译哦!急用!!! 人眼感受的亮度取决于哪些因素? 谁有贾永红 武汉大学出版社 数字图像处理的课后答案? 如果......也会......造句 用ABCDE造句 怪异造句 嘿嘿 看谁写的最搞笑 唧唧咕咕的造句 用谅解是什么能什么造句 呵呵,你想怎么说?哦,嘿嘿.只用一会儿一会儿造句. 带有却的造句/嘿嘿嘿嘿嘿嘿嘿嘿 亲人去世为什么非常害怕 呵呵,你想怎么说?哦,嘿嘿。只用一会儿一会儿造句。 刘长乐母亲是谁 小弟最近在做象棋,其中有一个步骤是在登录面板里加一个按钮,点它后出现一个全是头像的下拉框, 芭比靠什么保护知识产权? 美泰玩具召回事件 美泰验厂资料有哪些? 谁是刘长乐? 凤凰网是谁创立的? 刘长乐是凤凰卫视最大的股东吗? 请问WDZH-YJE-0.6/1是什么类型的电缆 WDZH-YJE-3*4是什么意思? 苹果手机ios8.0.2升级后手机老是无服务是怎么回事, wdzh-byjf3/10是电线还是电缆? 爱奇艺换新Logo了,“突破边界”“化方为圆”,如何评价新Logo? 计算机三级数据库技术上机设计题答案怎么写 电线WDZH一BYJ(F)和WDZH_BYJ又什么区别吗,带(F)和不带(F)是一样的线吗? wdzh一yj(f)y(5*4)是什么样的电缆 电气中wdzh-5*2.5-jdg32是什么意思 WDZ-BYJ和WDZ-BYJ(F)有什么区别?WDZ-BYJ和WDZN-BYJ又有什么区别? WDZHYJYR是什么型号的电缆? 什么是皮包公司? 这种和中国20世纪70,80年代经济改革的所谓计划内物资有什么关系?