首页 > 解决方案 > 在 VSTO 插件 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 错误是:

严重性代码 描述 项目文件行抑制状态错误 CS1503 参数 1:无法从 'string' 转换为 'Microsoft.Office.Tools.Ribbon.RibbonDropDownItem' TemplateCopying C:\Users****\source\repos\TemplateCopying\Ribbon1.cs 39 活跃

标签: c#drop-down-menucomboboxms-wordvsto

解决方案


DropDown对于下拉列表,从 Visual Studio 的工具/Office 功能区控件窗格中插入控件。在属性窗格中为其分配名称和标签。出于讨论的目的,将一个名为 DropDown 的控件ddList添加到了功能区选项卡中。

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

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

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

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

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

使用 Ribbon Designer 时,VSTO 将 Office Fluent UI 抽象化,并提供比直接使用 Ribbon XML 更“直观”的开发界面。因此,VSTO 不是编写回调,而是创建可以类似于 Windows 窗体控件使用的对象。

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


推荐阅读