在 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 若要为控件的默认事件生成代码存根,请双击该控件。要为其他事件生成代码存根,请在“属性”窗格中切换到“事件”页面并双击。
我需要从一个位置获取文件列表,并将它们的名称(如项目)放入功能区中的组合框或画廊或下拉列表(列表更好)。
但我不明白如何将数据导入下拉列表。 我现在有这个:
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 若要为控件的默认事件生成代码存根,请双击该控件。要为其他事件生成代码存根,请在“属性”窗格中切换到“事件”页面并双击。