在 VSTO 插件 Word 中将项目添加到 ComboBox 或 Gallery

Adding items to a ComboBox or Gallery in VSTO addin Word

我需要从一个位置获取文件列表,并将它们的名称(如项目)放入功能区中的组合框或画廊或下拉列表(列表更好)。

但我不明白如何将数据导入下拉列表。 我现在有这个:

using System.IO;
using System.Data;
using System;
using Microsoft.Office.Tools.Ribbon;
private void ComboBox1_TextChanged(object sender, RibbonControlEventArgs e)
        {
            DirectoryInfo d = new DirectoryInfo(@"C:\install\CSharp");//Getting files info
            FileInfo[] Files = d.GetFiles("*.dot*"); //Getting dot or dotm
            string str = "";
            var filtered = Files.Where(f => !f.Attributes.HasFlag(FileAttributes.Hidden)); //Getting out the hidden files
            foreach (FileInfo file in filtered)
            {
                str = file.Name;

                File.AppendAllText(@"C:\install\CSharp\tulemus.txt", $"File name is: {str}" + Environment.NewLine);  //but I want to put them in to my Combobox

          //this.comboBox1.Items.Add(("How to put filtered info here instead of a text file"));
            }
        }

Visual Studio 错误是:

Severity Code Description Project File Line Suppression State Error CS1503 Argument 1: cannot convert from 'string' to 'Microsoft.Office.Tools.Ribbon.RibbonDropDownItem' TemplateCopying C:\Users****\source\repos\TemplateCopying\Ribbon1.cs 39 Active

对于下拉列表,从 Visual Studio 的 Tools/Office 功能区控件窗格中插入 DropDown 控件。在属性窗格中为其指定名称和标签。出于本次讨论的目的,将名为 ddList 的 DropDown 控件添加到功能区选项卡。

下一个决定是,何时填充列表?

  • 如果列表应该是静态的,请转到“属性”中的 Buttons 条目并单击它以获取可以键入静态列表的界面。
  • 为了在创建功能区(加载 VSTO 项目)时填充列表,请在功能区的 Load 事件中编写代码
  • 要在 VSTO 项目会话期间动态更改列表,运行 基本相同的代码,但需要时(例如单击按钮)

填充列表的示例代码。为每个列表条目创建一个 RibbonDropDownItem。分配属性,然后将条目附加 (Add) 到 DropDown 控件。代码是相同的,无论是在 Load 事件中触发、由下拉列表本身的事件触发,还是由按钮触发。 (注意:如果按钮的事件代码不在功能区中,则需要引用功能区 class。)

RibbonDropDownItem ddItem1 = new RibbonDropDownItem();
ddItem1.Label = "Item added at runtime";
ddList.Items.Add(ddItem1);

功能区设计器中控件编程的背景知识

使用 Ribbon Designer 时,VSTO 抽象了 Office Fluent UI 并提供了比直接使用 Ribbon XML 更多 "intuitive" 的开发接口。因此,VSTO 不是编写回调,而是创建可以类似于 Windows Forms 控件使用的对象。

这些可以通过功能区 class 访问,默认情况下 VSTO 将创建(例如): Ribbbon1.cs 若要为控件的默认事件生成代码存根,请双击该控件。要为其他事件生成代码存根,请在“属性”窗格中切换到“事件”页面并双击。