Это означает, что его нужно будет обновлять при открытии или закрытии проекта. Я уже реализовал событие 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;
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... ication-pr