这可能是一个带有简单答案的简单问题,但我找不到。我正在构建带功能区按钮的VSTO加载项,当关闭所有工作簿时,这些功能区按钮将停用。为此,我处理了App_WorkbookBeforeCloseEvent
。当我尝试关闭工作簿而不保存更改时,自然会收到保存提示。当我单击“是”或“否”时,关闭工作簿后,功能区按钮将停用,这很好。但是,当我单击“取消”时,工作簿没有关闭(良好),但功能区按钮仍处于停用状态(不良)。我尝试了许多How to effectively use WorkbookBeforeClose event correctly?之类的解决方案,但是我得到了不需要的额外提示。
我曾经尝试检查saved
属性,但是无论我单击“否”还是“取消”按钮,其行为都相同。这是我的功能:
private void App_WorkbookBeforeClose(Excel.Workbook Wb, ref bool Cancel)
{
if (!Wb.Saved)
return;
bool isEnabled = false;
setRibbonControlState(ref isEnabled);
for (int i = 0; i < CustomTaskPanes.Count; i++)
CustomTaskPanes[i].Visible = false;
}
控制色带状态的功能
private void setRibbonControlState(ref bool isEnabled)
{
int workbookCount = Application.Windows.Count;
if (workbookCount > 1)
return;
tdsRepDsbRibbon ribbon = Globals.Ribbons.tdsRepDsbRibbon;
int tabCount = ribbon.Tabs.Count;
for (int i = 0; i < tabCount; i++)
{
RibbonTab tab = ribbon.Tabs[i];
int grpCount = tab.Groups.Count;
for (int j = 0; j < grpCount; j++)
{
RibbonGroup grp = tab.Groups[j];
int itCount = grp.Items.Count;
for (int k = 0; k < itCount; k++)
{
grp.Items[k].Enabled = isEnabled;
}
}
}
}
我的问题是在关闭工作簿之前如何获取Excel提示的保存消息的值(YesNoCancel)?
谢谢!