I have created an Excel VSTO Addin which will show a message box with yes, no and cancel as button options on the close event of Current document.
Я открыл 2 документа Excel для редактирования.После того, как я завершу редактирование, я пытаюсь закрыть один из них, и когда я нажимаю кнопку закрытия документа, появляется мое сообщение.Если я нажимаю «Нет», все изменения должны быть отменены, и документ должен быть закрыт.Другие документы не следует закрывать.
Это код, который я использовал для действия Не сохранять
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.WorkbookBeforeClose += Application_WorkbookBeforeClose;
}
private void Application_WorkbookBeforeClose(Excel.Workbook Wb, ref bool Cancel)
{
DialogResult result = MessageBox.Show("Do you want to save changes to " + Wb.Name + "?", "Microsoft Excel ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
switch (result)
{
case DialogResult.Yes:
Wb.Save();
break;
case DialogResult.No:
int count = this.Application.Workbooks.Count;
if(count > 0)
{
if (count == 1)
{
Excel.Application excel =Globals.ThisAddIn.Application;
Workbooks workbooks = excel.Workbooks;
foreach (Workbook wb in workbooks)
{
wb.Close(false, missing, missing);
}
workbooks = null;
excel.Quit();
excel = null;
}
else
{
Wb.Close(false, missing, missing);
}
}
break;
case DialogResult.Cancel:
Cancel = true;
break;
}
}
Если для редактирования открыто более одного документа Excel, то расширение Excel vsto должно закрытьсяконкретный документ Excel, в котором выполняются закрытые действия и другие документы должны оставаться открытыми.Мой метод закрывает документ, но не закрывает приложение.Как полностью закрыть приложение Excel? мой Excel выглядит так