Как я могу контролировать резьбовые окна в C # - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть приложение C #, которое запускается как контекстное меню в системном трее.Один из вариантов отобразит окно «Информация о системе», и в данный момент я открываю это окно в другом потоке (по событию клика), как это ...

void menu_SystemInformation_Click(object sender, EventArgs e)
{
    System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(menu_Systeminformation_Thread));
t.Start();
}
void menu_Systeminformation_Thread()
{
    Application.Run(new SystemInformation());
}

У меня есть два вопроса по этому поводу...

  1. Как убедиться, что при выборе этой опции открывается только один экземпляр этой формы.
  2. Как автоматически закрыть эту форму (если она открыта)когда приложение закрывается.

Любая помощь приветствуется.Я занимаюсь C # всего несколько недель, так что будь осторожен со мной!Cheers,

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

1.Как я могу убедиться, что при выборе этой опции открывается только один экземпляр этой формы.

Программирование.Расположитесь по центру, проверьте, есть ли у вас уже открытое окно.Для этого нет автоматики, но это тривиально.

2.Как я могу автоматически закрыть эту форму (если она открыта), когда приложение закрывается.

Вы ничего не делаете.Процесс закрывается, все окна все равно закрываются.Выпущены все открытые ресурсы ОС, включая файлы и т. Д.

0 голосов
/ 14 февраля 2012
  1. Если вы имеете в виду один экземпляр приложения - вы можете использовать имя Mutex
  2. Если вы имеете в виду один экземпляр конкретного объекта Form - есть много разных случаев.Как простое решение - синглтон.В основном объявляем статическую переменную bool, например static bool isInstanceCreated, и проверяем ее перед созданием нового экземпляра
0 голосов
/ 14 февраля 2012

Я хотел бы добавить в TomTom ответ на следующий вопрос:

Как я могу убедиться, что при выборе этой опции открывается только один экземпляр этой формы.

Я бы реализовал шаблон Singleton для его достижения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...