簡體   English   中英

VSTO 功能區組合框文本更改事件回調

[英]VSTO Ribbon Combo Box Text Changed Event Call back

我正在創建 VS Outlook 插件。

如何獲取組合框的文本更改事件。 當用戶在組合框中輸入一些文本時,我想調用我的 API 來檢索數據

          <comboBox id="cmbUsers" label="Users" showImage="false" 
               getItemCount="OnGetItemCount"
              getItemLabel="OnGetItemLabel"
              onChange="OnChange"
                getText="GetText"
                getKeytip="GetKeytip"/>

我嘗試使用 OnChange 回調,但它不起作用。 但是在功能區設計器中,我可以看到 TextChange 事件。

如何使用回調事件進行文本更改

 [ComVisible(true)]
public class Ribbon : Office.IRibbonExtensibility
{
    private Office.IRibbonUI ribbon;

    public Ribbon()
    {
    }

    #region IRibbonExtensibility Members

    public string GetCustomUI(string ribbonID)
    {
        return GetResourceText("UserOutlookAddin.Ribbon.xml");
    }

    #endregion

    #region Ribbon Callbacks
    //Create callback methods here. For more information about adding callback methods, select the Ribbon XML item in Solution Explorer and then press F1

    public void Ribbon_Load(Office.IRibbonUI ribbonUI)
    {
        this.ribbon = ribbonUI;



    }

    public void OnActionCallback(Office.IRibbonControl control)
    {
        if (control.Id == "checkBox1")
        {
            MessageBox.Show("You clicked " + control.Id);
        }
        else
        {
            MessageBox.Show("You clicked a different control.");
        }
    }
    public void OnGetItemCount(Office.IRibbonControl control)
    {
        Debug.WriteLine("##### Am OnGetItemCount");
    }
    public void OnGetItemLabel(Office.IRibbonControl control)
    {
        Debug.WriteLine("##### Am OnGetItemLabel");
    }
    public void OnChange(Office.IRibbonControl control)
    {
        Debug.WriteLine("##### Am OnChange");
    }
    public void GetText(Office.IRibbonControl control)
    {
        Debug.WriteLine("##### Am GetText");
    }
    public void GetKeytip(Office.IRibbonControl control)
    {
        Debug.WriteLine("##### Am GetKeytip");
    }

    #endregion

    #region Helpers

    private static string GetResourceText(string resourceName)
    {
        Assembly asm = Assembly.GetExecutingAssembly();
        string[] resourceNames = asm.GetManifestResourceNames();
        for (int i = 0; i < resourceNames.Length; ++i)
        {
            if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0)
            {
                using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i])))
                {
                    if (resourceReader != null)
                    {
                        return resourceReader.ReadToEnd();
                    }
                }
            }
        }
        return null;
    }

    #endregion
}

onChange回調的簽名從

public void OnChange(Office.IRibbonControl control)

public void OnChange(Office.IRibbonControl control, string text)

現在它應該被調用。

此外,您應該將getItemCountgetItemLabelgetTextgetKeytip

public void OnGetItemCount(Office.IRibbonControl control)
public void OnGetItemLabel(Office.IRibbonControl control)
public void GetText(Office.IRibbonControl control)
public void GetKeytip(Office.IRibbonControl control)

public int OnGetItemCount(Office.IRibbonControl control)
public string OnGetItemLabel(Office.IRibbonControl control, int index)
public string GetText(Office.IRibbonControl control)
public string GetKeytip(Office.IRibbonControl control)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM