TSharma0407 Ответов: 0

Как я могу идентифицировать document.close() и приложение.событие quite() в microsoft.office.interop.word на языке Си#


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

1. Закройте только документ word, если пользователь закроет его с помощью File-->Close option not complete
приложение.
2. Когда пользователь открыл документ и написал в нем какой-то текст, нажмите на приложение
Кнопка Close(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;
                }
            }
		}

Maciej Los

это также не работает для меня. это совсем не обманчиво! Пожалуйста, будьте более конкретны и предоставьте более подробную информацию.
Примечание: MS Word-это приложение с несколькими экземплярами. Таким образом, когда вы открываете или создаете новый документ, он создает новый intance MS Word (по умолчанию). Видеть: Новый экземпляр Word появляется для запуска при создании или открытии дополнительного документа в Word 2000 и более поздних версиях Word[^]

TSharma0407

Я просто хочу отслеживать, какое событие срабатывает, закрытие файла или приложение quite/close(X) event перед закрытием документа.

0 Ответов