VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间、添加所需文件,才能实现。后来我发现可以把所有代码都写在ThisAddin.cs这个默认文件中。

大家可以在Visual Studio中创建一个外接程序项目,然后把ThisAddin.cs中的代码整体替换为下面我贴的这个代码。然后启动调试,就可以看到自定义功能区和任务窗格了。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel; namespace ExcelAddInTemplate_CS
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Module1.CreateCTP();
} private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
Module1.DisposeCTP();
}
protected override Office.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new Ribbon1();
}
#region VSTO generated code /// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
} #endregion
}
[System.Runtime.InteropServices.ComVisible(true)]
public class Ribbon1:Microsoft.Office.Core.IRibbonExtensibility
{
public Office.IRibbonUI R;
string Office.IRibbonExtensibility.GetCustomUI(string RibbonID)
{
string xml= @"<customUI xmlns='http://schemas.microsoft.com/office/2009/07/customui' onLoad='OnLoad'>
<ribbon startFromScratch='false'>
<tabs>
<tab id='Tab1' label='RibbonXmlEditor'>
<group id='Group1' label='Author:ryueifu'>
<button id='Button1' label='CTP' imageMso='C' onAction='Button1_Click'/>
<button id='Button2' label='UnLoad' imageMso='U' onAction='Button2_Click'/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>";
return xml;
}
public void OnLoad(Office.IRibbonUI ribbon)
{
R = ribbon;
R.ActivateTab(ControlID: "Tab1");
}
public void Button1_Click(Office.IRibbonControl control)
{
Module1.ctp.Visible = !Module1.ctp.Visible;
}
public void Button2_Click(Office.IRibbonControl control)
{
Office.COMAddIn ThisCOM = Globals.ThisAddIn.Application.COMAddIns.Item("ExcelAddInTemplate_CS");
ThisCOM.Connect = false;
} }
public static class Module1
{
public static System.Windows.Forms.UserControl uc;
public static Microsoft.Office.Tools.CustomTaskPane ctp;
public static void CreateCTP()
{
uc = new System.Windows.Forms.UserControl();
ctp = Globals.ThisAddIn.CustomTaskPanes.Add(control: uc, title: "CTP");
ctp.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight;
ctp.Visible = true;
}
public static void DisposeCTP()
{
ctp.Dispose();
}
}
}

VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】的更多相关文章

  1. VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】

    VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在ThisAddin.vb这个默认文件中. 大家可以在Visual Studio中创建 ...

  2. Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】

    Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在Class1.cs这个默认文件中. 大家可以在Visual Studi ...

  3. Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】

    Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在Class1.vb这个默认文件中. 大家可以在Visual Studi ...

  4. Web 应用程序项目与 Visual Studio 中的网站项目的异同

    要查看英语原文,请勾选“英语”复选框.也可将鼠标指针移到文本上,在弹出窗口中显示英语原文. 翻译 英语 本文档已存档,并且将不进行维护. Web 应用程序项目与 Visual Studio 中的网站项 ...

  5. MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误

    今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目 ...

  6. 使用 Visual C# .NET 生成 Office COM 外接程序

    Microsoft Office XP 和 Microsoft Office 2003 都支持一种新的统一的设计结构,这种结构用于生成应用程序外接程序以增强和控制 Office 应用程序.这些外接程序 ...

  7. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  8. (转) VS2010 Addins 外接程序(插件)开发

    http://www.cnblogs.com/Leo_wl/archive/2013/03/21/2973886.html VS2010 Addins 外接程序(插件)开发 阅读目录 VS2010 A ...

  9. 【VS外接程序】利用T4模板生成模块代码

    引言 记得第一次做asp.net mvc项目时,可以用model直接生成Html的增删改查页面, 没什么特殊要求都可以不用修改直接用了, 觉得很神奇,效率太高了.后来在做客户端开发时,发现很多模块都是 ...

随机推荐

  1. JS-表单非空验证

    JavaScript 表单验证 JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证. 实例:1.用户名的非空验证代码如下: <head> <m ...

  2. GoF 23种设计模式概述

    本文的结构: 一.设计模式总览 二.创建型设计模式 Creational Patterns 三.结构型设计模式 Structural Patterns 四.行为型设计模式 Behavioral Pat ...

  3. python的debug神器PySnooper

    同事给我推荐了这个调试神器,一直没工夫看,今天看了下. 原文链接: 史上最方便的Python Debug工具|腾讯技术说 体验了下,感觉最好的用法:1.优先逐行调试:2.一些复杂状态处理或者偶现的bu ...

  4. 学生选课系统(Java语言期末前测试)

      测试具体要求: 2.系统要求与功能设计 2.1 页面要求 (1)能够在Tomcat服务器中正确部署,并通过浏览器查看: (2)网站页面整体风格统一: (3)首页(登录页)要求实现不同用户登录后,进 ...

  5. .NET CORE 获取微信支付回调

    1.获取微信支付的回调的数据 Stream stream = HttpContext.Request.Body; byte[] buffer = new byte[HttpContext.Reques ...

  6. scrapy 在pycharm中调试 不用到命令行中启动爬虫方法

    (目录结构如上图) 在主目录中加入main.py,在其中加入代码,运行此文件就可以运行整个爬虫: # -*- coding: utf-8 -*- __author__='pasaulis' #在程序中 ...

  7. httpclient连接池在ES Restful API请求中的应用

    package com.wm.utils; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http ...

  8. LeetCode——714. 买卖股票的最佳时机含手续费.

    给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每次交易都需要付手续费.如果你已经购买了一个 ...

  9. leetcode中二分查找的具体应用

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...

  10. springboot +Thymeleaf+UEditor整合记录

    1,ueditor官网下载:https://ueditor.baidu.com/website/download.html  下载相应的工具包和源码,ps:源码放到工程中 2,解压放到放到项目中,sp ...