Ribbon.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Reflection;
  6. using System.Runtime.InteropServices;
  7. using System.Text;
  8. using Office = Microsoft.Office.Core;
  9. // TODO: 按照以下步骤启用功能区(XML)项:
  10. // 1. 将以下代码块复制到 ThisAddin、ThisWorkbook 或 ThisDocument 类中。
  11. // protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
  12. // {
  13. // return new Ribbon();
  14. // }
  15. // 2. 在此类的“功能区回调”区域中创建回调方法,以处理用户
  16. // 操作(如单击某个按钮)。注意: 如果已经从功能区设计器中导出此功能区,
  17. // 则将事件处理程序中的代码移动到回调方法并修改该代码以用于
  18. // 功能区扩展性(RibbonX)编程模型。
  19. // 3. 向功能区 XML 文件中的控制标记分配特性,以标识代码中的相应回调方法。
  20. // 有关详细信息,请参见 Visual Studio Tools for Office 帮助中的功能区 XML 文档。
  21. namespace HTEXWordTest
  22. {
  23. [ComVisible(true)]
  24. public class Ribbon : Office.IRibbonExtensibility
  25. {
  26. private Office.IRibbonUI ribbon;
  27. public Ribbon()
  28. {
  29. }
  30. #region IRibbonExtensibility 成员
  31. public string GetCustomUI(string ribbonID)
  32. {
  33. return GetResourceText("HTEXWordTest.Ribbon.xml");
  34. }
  35. #endregion
  36. #region 功能区回调
  37. //在此处创建回叫方法。有关添加回叫方法的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=271226
  38. public void Ribbon_Load(Office.IRibbonUI ribbonUI)
  39. {
  40. this.ribbon = ribbonUI;
  41. }
  42. #endregion
  43. #region 帮助器
  44. private static string GetResourceText(string resourceName)
  45. {
  46. Assembly asm = Assembly.GetExecutingAssembly();
  47. string[] resourceNames = asm.GetManifestResourceNames();
  48. for (int i = 0; i < resourceNames.Length; ++i)
  49. {
  50. if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0)
  51. {
  52. using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i])))
  53. {
  54. if (resourceReader != null)
  55. {
  56. return resourceReader.ReadToEnd();
  57. }
  58. }
  59. }
  60. }
  61. return null;
  62. }
  63. #endregion
  64. }
  65. }