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