Member 14069291 Ответов: 0

Очистка выпадающего списка с помощью invalidate() outlook addin C#


Ribbon1.cs с использованием Ribbon Designer (т. е. без XML)

Я пытаюсь очистить содержимое выпадающего списка перед повторным заполнением списка новыми данными.

Я пробовал использовать Invalidate() в нескольких местах, но не могу заставить его работать.

Поток Аддина выглядит следующим образом:

Копирование текста в буфер обмена -> работает

Нажмите кнопку Поиск -> работает

Получение новых данных из базы данных с помощью текста из буфера обмена -> работает

Очистить выпадающий список -> не работает

Заполните выпадающий список данными. -> действительно работает, но добавляет элементы в выпадающий список вместо того, чтобы сначала очистить его

Заранее спасибо


using System;
using System.Collections.Generic;
using System.IO;
using System.Data;
using System.Data.Odbc;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using Office = Microsoft.Office.Core;
using Outlook = Microsoft.Office.Interop.Outlook;
using Microsoft.Office.Tools.Ribbon;

namespace MSTEST
{
    public partial class Ribbon1 : Office.IRibbonExtensibility
    {
        private Office.IRibbonUI ribbon;
        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
        {
            this.ribbon = RibbonUI;
        }

        private void eventDB(object sender, RibbonControlEventArgs e)
        {
            RibbonUI.Invalidate();
            //this.ribbon.InvalidateControl("resultsDB");
            string getTextFromClipboard = Clipboard.GetText();
            string queryString = "select distinct file_path as FP, case_id as CS, date_added from documents CONTAINS(documents.file_path, '" + getTextFromClipboard + "') group by case_id,file_path, datE_added order by Date_Added DESC";
            using (OdbcConnection odbcConnection = new OdbcConnection("dsn=Needles;UID=dba;PWD=sql;"))
            {
                OdbcCommand command = new OdbcCommand(queryString, odbcConnection);
                try
                {
                    odbcConnection.Open();
                    OdbcDataReader reader = command.ExecuteReader();
              //      ribbon.InvalidateControl("resultsDB");
                    int i = 0;
                    while (reader.Read())
                    {
                        // Being DropDown Populate
                        RibbonDropDownItem item = this.Factory.CreateRibbonDropDownItem();
                        item.Label = reader["FP"].ToString();
                        resultsDB.Items.Add(item);
                        //MessageBox.Show(reader["CS"].ToString());
                        // End DropDown Populate
                        i = i + 1;
                    }

                    reader.Close();
                    odbcConnection.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
        public string GetCustomUI(string RibbonID)
        {
            throw new NotImplementedException();
        }
    }
}


Что я уже пробовал:

Я перепробовал все виды вариаций ленты.Аннулировать. Я думаю, что это может быть связано с тем, как outlook теряет фокус на ленте после нажатия кнопки "Поиск".

0 Ответов