Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 如果选择了一封或多封邮件,则禁用outlook功能区按钮_C# 4.0_Outlook Addin - Fatal编程技术网

C# 4.0 如果选择了一封或多封邮件,则禁用outlook功能区按钮

C# 4.0 如果选择了一封或多封邮件,则禁用outlook功能区按钮,c#-4.0,outlook-addin,C# 4.0,Outlook Addin,我正在开发outlook外接程序,并使用visual designer添加了一个功能区,其中包含一些控件,如下拉按钮、提交按钮和文本框等。单击提交按钮,我将选择所选邮件主题并传递给服务 如果选择了多个邮件项目,则我想禁用我的按钮控件。在这种情况下,我需要编写代码来禁用按钮 我尝试了下面的代码,该代码用于功能区加载,但我想在邮件项目选择更改时调用此方法。不确定如何调用选择更改事件 private bool IsMoreMailSelected() { bool isSelected

我正在开发outlook外接程序,并使用visual designer添加了一个功能区,其中包含一些控件,如下拉按钮、提交按钮和文本框等。单击提交按钮,我将选择所选邮件主题并传递给服务

如果选择了多个邮件项目,则我想禁用我的按钮控件。在这种情况下,我需要编写代码来禁用按钮

我尝试了下面的代码,该代码用于功能区加载,但我想在邮件项目选择更改时调用此方法。不确定如何调用选择更改事件

private bool IsMoreMailSelected()
{
        bool isSelected = false;
        outlookObj = new Outlook.Application();
        Outlook.Selection mySelection = this.outlookObj.ActiveExplorer().Selection;
        int iCount = mySelection.Count;
        if (iCount > 1)
        {
            isSelected = true;
        }
        else
        {
            isSelected = false;
        }
        return isSelected;

    }
您需要处理Explorer类的事件,在该事件中可以检查选择了多少项。当用户(以编程方式或通过用户界面)单击或切换到包含项目的其他文件夹时,也会发生此事件,因为Outlook会自动选择该文件夹中的第一个项目。有关示例代码,请参见

在事件处理程序中,您可以调用IRibbonUI接口的或方法,以使功能区用户界面上的控件(或单个控件)的缓存值无效。因此,您将重新调用功能区XML标记中定义的回调。有关更多信息,请参阅

getEnabled
回调中,只需返回false即可禁用控件。MSDN中的以下系列文章深入介绍了Ribbon UI(也称为Fluent UI):


处理此加载项类中的SelectionChange事件,例如:

    public partial class ThisAddIn
{
    Outlook.Explorer currentExplorer;        

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {   
        currentExplorer = this.Application.ActiveExplorer();
        currentExplorer.SelectionChange += new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(SelectionChangeEventHandler);
    }

    private void SelectionChangeEventHandler()
    {            
        bool buttonEnabled = false;
        if (this.Application.ActiveExplorer().Selection.Count == 1)
        {
            Object selObject = this.Application.ActiveExplorer().Selection[1];
            buttonEnabled = selObject is Outlook.MailItem;                
        }
        Globals.Ribbons.Ribbon1.MyButton.Enabled = buttonEnabled;
    }