Как определить события document.close () и application.quit () в Microsoft.Office.Interop.Word в c # - PullRequest
0 голосов
/ 20 сентября 2018

Как мне определить события document.close () и application.quit () в Microsoft.Office.Interop.Word в c #?

Я не могу определить, какое событие close запущено document.close() или кнопка закрытия приложения (X).

  1. Закрыть только текстовый документ, если пользователь закрыл его, используя опцию Файл -> Закрыть не завершить приложение.
  2. Когда пользователь открыл документи напишите в нем некоторый текст и нажмите кнопку «Закрыть» (X) приложения, затем приложение должно запросить у пользователя запрос «сохранить этот документ« ДА »или« НЕТ »? если пользователь нажимает кнопку« НЕТ », то заполненное приложение должнобыть близким.

Примечание. Я также реализовал метод выхода из приложения "ApplicationEvents4_QuitEventHandler", но он также не работает для меня.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        ((ApplicationEvents4_Event)this.Application).NewDocument += new ApplicationEvents4_NewDocumentEventHandler(Application_NewDocument);
        this.Application.DocumentOpen += new ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);
        this.Application.DocumentBeforeClose += new ApplicationEvents4_DocumentBeforeCloseEventHandler(Application_DocumentBeforeClose);               
        this.Application.WindowActivate += new ApplicationEvents4_WindowActivateEventHandler(Application_WindowActivate);
        this.Application.WindowDeactivate += new ApplicationEvents4_WindowDeactivateEventHandler(Application_WindowDeactivate);
        this.Application.DocumentBeforeSave += new ApplicationEvents4_DocumentBeforeSaveEventHandler(Application_DocumentBeforeSave);
        //((ApplicationEvents4_Event)this.Application).Quit += new ApplicationEvents4_QuitEventHandler(Application_Quit);
    }

    void Application_DocumentBeforeClose(Document document, ref bool cancel)
    {
        if (document.Content.Characters.Count <= 1)
        {
            document.Close(WdSaveOptions.wdDoNotSaveChanges);
        }
        else
        {
            DialogResult DialogMessage = MessageBox.Show("Do you want to save document?", "Testing",
                                         MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
            if (DialogMessage == DialogResult.Yes)
            {
                bool SaveAsUI = true;
                bool Cancel = false;
                cancel = true;
                Application_DocumentBeforeSave(document, ref SaveAsUI, ref Cancel);
            }
            else if (DialogMessage == DialogResult.No)
            {
                cancel = true;
                if (this.Application.Documents.Count == 1)
                {
                    document.Close(WdSaveOptions.wdDoNotSaveChanges);                                
                    //this.Application.Quit();
                }
                else
                {
                    document.Close(WdSaveOptions.wdDoNotSaveChanges);
                }
            }
            else
            {
                cancel = true;
            }
        }
    }
...