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 МБ.

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