繁体   English   中英

如果使用C#和XML选择了下拉菜单VSTO Outlook,则执行操作

[英]Perform action if drop down item is selected VSTO Outlook using C# and XML

我在ribbon.xml文件中创建了一个简单的下拉菜单。 该菜单有4个项目,用户可以选择。 我正在使用的XML如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon>
    <tabs>
      <tab id="TabAddIns" label="testing">
        <group id="TestSettings" label="Settings">
          <dropDown id="trainingDropDown" label="Select Data Set">
            <item id="item1" label="lable 1" />
            <item id="item2" label="lable 2" />
            <item id="item3" label="lable 3" />
            <item id="item3" label="lable 4" />
          </dropDown>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

如何查看使用C#当前在下拉菜单中选择的项目? 即:

if(item1 == selected)
{  
    //do stuff
}

之前,我已经使用切换按钮和“ onAction”在VSTO代码中实现了动作,但是不幸的是,我无法弄清楚如何使用下拉菜单完成相同的操作。

感谢克里斯为我指出了正确的方向。 我可以使用下拉菜单“ onAction”回调来完成我想做的事情。 为此,我要做的就是将“ onAction”添加到我的XML中,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <ribbon>
    <tabs>
      <tab id="TabAddIns" label="testing">
        <group id="TestSettings" label="Settings" onAction = "SelectModel">
          <dropDown id="trainingDropDown" label="Select Data Set">
            <item id="item1" label="label 1" />
            <item id="item2" label="label 2" />
            <item id="item3" label="label 3" />
            <item id="item3" label="label 4" />
          </dropDown>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

从这里开始,我在功能区类中创建了一个名为“ SelectModel”的函数(与上面指定的onAction名称相对应)。 通过获取项目索引作为参数,我能够根据选择的下拉项目输出不同的消息。

public void SelectModel(Office.IRibbonControl control, string selectedId, int SelectedItemIndex)
        {
            if (SelectedItemIndex == 0)
            {
                MessageBox.Show("first item selected");
            }
            else if (SelectedItemIndex == 1)
            {
                MessageBox.Show("second item selected");
            }
            else if(SelectedItemIndex == 2)
            {
                MessageBox.Show("third item is selected");
            }
            else if (SelectedItemIndex == 3)
            {
                MessageBox.Show("fourth item is selected");
            }
        }

结果显示在这里: VSTO下拉菜单输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM