Добавление элементов в ComboBox или Галерею в VSTO addin Word - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно взять список файлов из одного места и поместить их имена (например, элементы) в comboBox или Gallery или Dropdownlist (список лучше) на ленте.

Но я не могу понять, как импортировать данные в выпадающий список. У меня есть это прямо сейчас:

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: невозможно преобразовать из «строки» вШаблонное копирование шаблона C: \ Users **** \ source \ repos \ TemplateCopying \ Ribbon1.cs 39 Microsoft.Office.Tools.Ribbon.RibbonDropDownItem. Активно

1 Ответ

1 голос
/ 04 октября 2019

Для раскрывающегося списка вставьте элемент управления DropDown из панели инструментов Visual Studio на панели инструментов / Office. Присвойте ему имя и метку на панели свойств. Для целей этого обсуждения на вкладку ленты был добавлен элемент управления DropDown с именем ddList.

Следующее решение заключается в том, когда следует заполнять список?

  • Если список должен быть статическим, перейдите к записи Buttons в Свойствах и щелкните ее, чтобы получить интерфейс, в котором можно вводить статический список.
  • Для того, чтобызаполнить список при создании ленты (загружен проект VSTO) записать код в событии Load ленты
  • Для динамического изменения списка во время сеанса проекта VSTO, запустите в основном тот же код, но когда онтребуется (например, нажата кнопка)

Пример кода для заполнения списка . Создайте RibbonDropDownItem для каждой записи списка. Назначьте свойства, затем добавьте (Add) запись в элемент управления DropDown. Код тот же, независимо от того, вызван ли он в событии Load, событием самого выпадающего меню или кнопкой. (Примечание. Если код события кнопки отсутствует в ленте, потребуется ссылка на класс ленты.)

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

Фон для программирования элементов управления в конструкторе лент

При использовании конструктора лент VSTO абстрагирует пользовательский интерфейс Office Fluent и предоставляет более «интуитивно понятный» интерфейс разработки, чем работа непосредственно с Ribbon XML. Поэтому вместо того, чтобы писать обратные вызовы, VSTO создает объекты, которые можно использовать аналогично, скажем, элементам управления Windows Forms.

Доступ к ним можно получить через класс Ribbon, по умолчанию VSTO создаст (например): Ribbbon1.cs Чтобы создать заглушку кода для события по умолчанию для элемента управления, дважды щелкните элемент управления. Чтобы создать заглушку кода для других событий, переключитесь в панели свойств на страницу событий и дважды щелкните.

...