C# 在VSTO加载项Word中将项目添加到组合框或库中
我需要从一个位置获取文件列表,并将它们的名称(如项目)放入功能区中的组合框、图库或下拉列表(列表更好) 但我不明白如何将数据导入Dropdownlist。 我现在有这个:C# 在VSTO加载项Word中将项目添加到组合框或库中,c#,drop-down-menu,combobox,ms-word,vsto,C#,Drop Down Menu,Combobox,Ms Word,Vsto,我需要从一个位置获取文件列表,并将它们的名称(如项目)放入功能区中的组合框、图库或下拉列表(列表更好) 但我不明白如何将数据导入Dropdownlist。 我现在有这个: using System.IO; using System.Data; using System; using Microsoft.Office.Tools.Ribbon; private void ComboBox1_TextChanged(object sender, RibbonControlEventArgs e)
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:无法从“字符串”转换为
“Microsoft.Office.Tools.Ribbon.RibbonDropDownItem”TemplateCopy C:\Users****\source\repos\TemplateCopy\Ribbon1.cs 39处于活动状态
对于下拉列表,请从Visual Studio的“工具/Office功能区控件”窗格插入
下拉列表
控件。在“属性”窗格中为其指定名称和标签。出于本讨论的目的,已将名为ddList
的下拉控件添加到功能区选项卡中
下一个决定是,何时填充列表
- 如果列表应该是静态的,请转到属性中的
条目,然后单击它以获得一个可以键入静态列表的界面按钮
- 要在创建功能区(加载VSTO项目)时填充列表,请在功能区的
事件中写入代码Load
- 要在VSTO项目的会话期间动态更改列表,请在需要时运行基本相同的代码(例如,单击按钮)
RibbonDropDownItem
。分配属性,然后向下拉控件追加(Add
)条目。代码是相同的,无论是在Load
事件中触发,还是通过下拉菜单本身的事件触发,还是通过按钮触发。(注意:如果按钮的事件代码不在功能区中,则需要引用功能区类。)
功能区设计器中编程控件的背景
使用Ribbon Designer时,VSTO抽象出Office Fluent UI,并提供比直接使用Ribbon XML更“直观”的开发界面。因此,VSTO不编写回调,而是创建可以类似于Windows窗体控件使用的对象
这些可以通过Ribbon类访问,默认情况下VSTO将创建(例如):Ribbbon1.cs要为控件的默认事件生成代码存根,请双击该控件。要为其他事件生成代码存根,请在“属性”窗格中切换到“事件”页面,然后双击。网站上的规则有问题。你能用这个链接把这个问题简化成一个问题,而不是两个问题吗?我想你用的是丝带设计师吧?什么会触发将文件列表加载到列表?你试过什么密码?嘿。是的,使用了Ribbon designer。我想有更新按钮旁边的名单(触发器)。但在按下更新按钮之前,旧列表必须存在(因此,只有在有新文件时,我们才需要更新按钮)。到目前为止,我一直在尝试这个.comboBox1.Items.Add。我在网上找不到合适的。谢谢你的介绍。我最终得到了这个密码。现在它正在工作:RibbonDropDownItem ddItem1=Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();ddItem1.Label=$“{str}”;ddList.Items.Add(ddItem1);我收到COM错误。。。。无法将“System.\u ComObject”类型的COM对象强制转换为接口类型“Microsoft.Office.Core.IRibbonUI”。此操作失败,因为对IID为“{000C03A7-0000-0000-C000-0000000000 46}”的接口的COM组件的QueryInterface调用由于以下错误而失败:库未注册。(来自HRESULT的异常:0x8002801D(类型_E_libnotregisted))。
RibbonDropDownItem ddItem1 = new RibbonDropDownItem();
ddItem1.Label = "Item added at runtime";
ddList.Items.Add(ddItem1);