• C#.net Word add-in 一些开发相关点随笔。


    主要记录add-in开发过程中的磕磕碰碰。

    开发工具VS2008 office2007。

    1.F5调试时报“签名时出错: 指定了无效的提供程序类型”。

    解决:电脑“开始菜单-office文件夹-office工具-VBA数字证书-创建”。

    右键开发项目,比如WordAddIn1 属性-签名-从存储区选择。选择刚创建的证书,确定保存,就能正常F5了。

     2.F5调试后word残留add-in调试功能区移除。

    VS工作台-生成-清理解决方案。就可以移除调试的add-in插件了。

    插件注册表路径 HKEY_CURRENT_USERSoftwareMicrosoftOfficeWordAddins 展开,找到自己的那个项目文件夹节点,直接删除也可以移除调试的插件。

    3.创建自定义功能区菜单栏选项

    右键开发项目,新建项-V C#项-Office-功能区(可视化设计器)-Ribbon1.cs。双击打开,然后在工作台左侧工具箱-office 功能区控件 各种拖拉进来,然后各种双击click事件里写代码就行了。跟winform开发一样。

    4.创建自定义文档内winform窗体控件,包括各种按钮、输入框啥的控件。

    右键开发项目,添加-用户控件 UserControl1.然后就各种布局,按钮双击事件、局部变理,全局变理啥的,跟正常的winform开发一样。

    双击打开 ThisAddIn.cs进入开发模式

    private UserControl1 myUserControl1;//定义局部变量用户自定义控件
    public Microsoft.Office.Tools.CustomTaskPane myCustomTaskPane;//定义全局变量,用来放自定义控件的容器,可以视为form一样的容器,可能需要在功能区按钮来实现该form的隐藏显示,所以需要用public.

    然后在自带的startup方法里,实现自定义控件和容器,包括名字,大小,浮动位置。添加到程序的容器集合里,随时调用。

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
    myUserControl1 = new UserControl1();
    myCustomTaskPane = CustomTaskPanes.Add(myUserControl1, "Login Form");
    myCustomTaskPane.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
    myCustomTaskPane.Width = 340;
    myCustomTaskPane.Height = 320;
    myCustomTaskPane.DockPositionRestrict = Microsoft.Office.Core.MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoChange;
    }

    然后在功能区事件类Ribbon1.cs里的某个按钮事件或是别的啥事件里显示这个form就可以了。

    private void button1_Click(object sender, RibbonControlEventArgs e)
    {

    //加载C盘下的文件列表并呈现在word内
    string path = "C:\";
    DirectoryInfo info = new DirectoryInfo(path);
    string str="";
    foreach (FileInfo file in info.GetFiles())
    str += file.Name + " ";
    Microsoft.Office.Interop.Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
    object start = 0, end = 0;
    Microsoft.Office.Interop.Word.Range range = doc.Range(ref start, ref end);
    range.InsertBefore(str);

    Globals.ThisAddIn.myCustomTaskPane.Visible = true;//显示form
    }

  • 相关阅读:
    如何使用vs2008单元测试416a3648
    限制TextBox的长度
    DataGrid双击事件
    结构与类
    DataGrid删除对话框 & 限制编辑模试TextBox长度
    安逸...
    新来的,请多关照~!
    asp.net中使用JMail发邮件
    silverlight3datagrid中的数据导出到excel
    sl3中的DataGrid中的数据导出到Excel中 使用csv格式 解决中文是乱码的问题
  • 原文地址:https://www.cnblogs.com/500wdream/p/11769971.html
Copyright © 2020-2023  润新知