繁体   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