MSP: Ищем умный способ имитировать функциональность события Application.ProjectAfterClose.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 MSP: Ищем умный способ имитировать функциональность события Application.ProjectAfterClose.

Сообщение Anonymous »

У меня есть поле со списком, в котором я хотел бы сохранить список всех открытых проектов.
Это означает, что его нужно будет обновлять при открытии или закрытии проекта. Я уже реализовал событие ProjectOpen, но у меня возникли проблемы с поиском решения на случай закрытия проекта.
Просто использования ProjectBeforeCloseEvent будет недостаточно, поскольку оно срабатывает до всплывающего окна сохранения проекта. происходит, и пользователь может отменить операцию.
На данный момент я использую комбинацию ProjectBeforeCloseEvent и WindowActivateEvent в качестве обходного пути.
Однако , нет способа определить, отменяет ли пользователь закрытие последнего открытого проекта (поскольку WindowActivateEvent никогда не запускается).
Я бы предпочел не использовать таймер, который проверяет, закрылся ли проект по истечении определенного периода времени.
Изменить: я внес некоторые изменения в свой код, так как у пользователя была возможность удалить имя prj в поле со списком. без закрытия проекта. Однако я до сих пор не нашел способа решить мою основную проблему (когда закрывается последний открытый проект).
Вот мой обновленный код, на случай, если кто-то захочет его увидеть,
р>

Код: Выделить всё

private void _prjApp_WindowActivateEvent(MSP.Window activatedWindow)
{
List prjFileNames = ReturnOpenProjFileNames();

if (projectOpened)
{
foreach (var prjName in prjFileNames)
{
if (cbMSP.Items.Contains(prjName) == false)
{
AddMSPToComboBox(prjName);
}
}
}

if (projectClosed)
{
for (int i = cbMSP.Items.Count - 1; i >= 0; i--)
{
string prjName = cbMSP.Items[i].ToString();

if (prjFileNames.Contains(prjName) == false)
{
DeleteMSPInComboBox(prjName);
}
}
}

projectClosed = false;
projectOpened = false;
}
У меня есть две логические переменные, которым присвоены соответствующие события (ProjectBeforeCloseEvent и NewProjectEvent). Мы надеемся, что это позволит сократить ненужный запуск кода, когда пользователь просто меняет активный проект.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ication-pr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • MSP: Ищем умный способ имитировать функциональность события Application.ProjectAfterClose.
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Отправить значение слайдера в реальном времени от Max/MSP на местный веб-сайт
    Anonymous » » в форуме Javascript
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»