在AddIn关闭之前取消注册组合框SelectedIndexChanged事件

时间:2014-12-12 09:47:31

标签: asp.net winforms vsto word-automation

我正在开发一个MS Word 2010 AddIn,其中我有一个组合框,可以在更改时更新类属性:

private void comboboxFloweringStart_SelectedIndexChanged(object sender, EventArgs e)
{
    Globals.ThisAddIn.currentTaxon.FloweringStart = (short)this.comboboxFloweringStart.SelectedIndex;
}

此类在shutdown(ThisAddIn_Shutdown事件处理程序)上序列化。根据我设计的用户控件Microsoft.Office.Tools.CustomTaskPane taxonMarkupPanel,组合框位于TaxonPanel myTaxonPanel

问题是,在关闭事件触发之前的某个时刻,组合框上的SelectedIndexChanged事件将触发并将值重置为0,这是序列化的值。我知道我可以使用SelectionChangeCommitted而不是SelectedIndexChanged,但我有时会在代码中设置索引,并且事件也会在这些情况下触发。

CustomTaskPane没有可用于取消订阅事件处理程序的close事件,而且我不知道VSTO关闭时的事件顺序。是否还有其他可以订阅的事件,或者在关闭自定义任务窗格/用户控件时可以取消订阅SelectedIndexChanged事件处理程序的其他方式?

1 个答案:

答案 0 :(得分:1)

您应该订阅应用DocumentBeforeClose事件,和/或文档的<{1}}事件

Close