Действия над файлом перед закрытием. До появления Save As

Автор Тема: Действия над файлом перед закрытием. До появления Save As  (Прочитано 6064 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mymooney.ruАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Здравствуйте.
Как произвести какие либо действия над файлом перед закрытием, но до появления диалога - Сохранить изменения?
То есть когда мы нажали крестик закрыть, но еще не появилось диалоговое окно - Сохранить изменения.
Что за событие?

"Событие DocumentToBeDestroyed происходит после диалогового окна - Сохранить...."

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Если закрывается документ: [Doc Event] : Command will Start        : CLOSE
Если закрывается AutoCAD: [Doc Event] : Command will Start        : QUIT
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mymooney.ruАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Да, закрытие документа, с точки зрения API .NET событий.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Да, закрытие документа, с точки зрения API .NET событий.
Не понял. Я же уже всё написал. Расшифровываю. Событие Document.CommandWillStart. Команды QUIT и CLOSE
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mymooney.ruАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Если вот так вот -
Код - C# [Выбрать]
  1. public void Initialize()
  2. {
  3.        Application.DocumentManager.MdiActiveDocument.CommandWillStart += MdiActiveDocument_CommandWillStart;
  4. }
  5.  
  6. void MdiActiveDocument_CommandWillStart(object sender, AcAp.CommandEventArgs e)
  7.         {
  8.             WindowsForm.MessageBox.Show(e.GlobalCommandName);
  9.             if (e.GlobalCommandName.ToUpper().Equals("_close"))
  10.             {
  11.                 WindowsForm.MessageBox.Show("Шалом-9");
  12.             }
  13.         }
  14.  

то срабатывает через раз, или вообще не работает...
« Последнее редактирование: 24-03-2015, 11:17:46 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
1. Внимательно прочитай мою подпись по поводу форматирования кода на форуме. Это обязательное требование.
2. В этой строке как минимум две ошибки:
Код - C# [Выбрать]
  1. if (e.GlobalCommandName.ToUpper().Equals("_close"))
a) Ты переводишь строку в прописные буквы и сравниваешь со строкой из строчных букв.
b) Глобальное имя команды "CLOSE", а не "_CLOSE".
3. Не достаточно один раз подписаться на событие запуска команды в одном документе. Нужно подписаться на события создания/удаления документов и в них подписываться/отписываться от CommandWillStart. Это потому, что команда может быть запущена в любом из открытых документов (обычно в том, который в данный момент является активным)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mymooney.ruАвтор темы

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Понял, спасибо.