C# 为什么我的outlook加载项只能工作一次?

C# 为什么我的outlook加载项只能工作一次?,c#,outlook-addin,outlook-2010,C#,Outlook Addin,Outlook 2010,我已经生成了一个非常简单的功能区,可以添加到用户打开的每个新的Compose窗口中。丝带第一次就很好用。它有两个复选框,假设用户选择第一个复选框并发送消息 如果我在用户发送第一条消息时调试代码。在ItemSend事件中,我访问Globals.Ribbons.MyRibbon.MyCheckbox1.Checked将显示复选框已选中。该窗口关闭,用户打开一封新电子邮件 假设在第二封电子邮件中,用户单击第二个复选框Globals.Ribbons.MyRibbon.MyCheckbox2.Checke

我已经生成了一个非常简单的功能区,可以添加到用户打开的每个新的Compose窗口中。丝带第一次就很好用。它有两个复选框,假设用户选择第一个复选框并发送消息

如果我在用户发送第一条消息时调试代码。在
ItemSend
事件中,我访问
Globals.Ribbons.MyRibbon.MyCheckbox1.Checked
将显示复选框已选中。该窗口关闭,用户打开一封新电子邮件

假设在第二封电子邮件中,用户单击第二个复选框
Globals.Ribbons.MyRibbon.MyCheckbox2.Checked
。如果我调试相同的
ItemSend
事件并查看该字段,它将显示为false,并且当前选中了第一个复选框

这几乎就像是
Globals.Ribbons.MyRibbon
控件实例没有得到正确的更新,或者我误解了它没有得到正确的处理

编辑1

作为更新,我使用Ribbon(可视化设计器)创建了我的Ribbon。我应该使用Ribbon(XML)吗

编辑2

我不确定在我的问题中添加这些内容会有什么不同,但这是我在应用程序中使用的“代码”

private void ThisAddIn_Startup(object sender, System.EventArgs e) {
    this.Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}

void Application_ItemSend(object Item, ref bool Cancel) {
    if (Globals.Ribbons.MyRibbon.MyCheckbox1.Checked) {

    } else { 

    }
}

所以我的问题是我没有访问当前的ribbon集合。正如上面的代码所述,我使用的是
Globals.Ribbons.MyRibbon.Checkbox1.Checked
。对于每个
ItemSend
事件,您需要指定
ThisRibbonCollection ribbonCollection=Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()]以获取当前windows功能区。这又为我提供了发送事件的正确值

对于那些在代码窗口中需要此功能的用户

private void ThisAddIn_Startup(object sender, System.EventArgs e) {
    this.Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}

void Application_ItemSend(object Item, ref bool Cancel) {
    ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];
    if (ribbonCollection.MyRibbon.MyCheckbox1.Checked) {

    } else { 

    }
}

我们不能在没有看到你的代码的情况下解决这个问题……我认为代码在这里帮不了你。我不是那个需要帮助的人:)很好!这个问题是否足够的代码来解释这里发生了什么?您是否尝试创建一个新的Outlook加载项项目,并通过添加一个简单的复选框对其进行测试,看看该行为是否执行相同的操作?我的计算机上有一些代码可以修复您的问题。试着用它来解决你的问题。