Свернуть форму в системный трей - PullRequest
0 голосов
/ 23 сентября 2011

Я хочу скрыть свою форму, сохраняя приложение в фоновом режиме.Я использовал notifyIcon, и он всегда остается видимым.

Я использовал "this.Hide ();"чтобы скрыть мою форму, но, к сожалению, мое приложение закрывается (не исключение).

Я также использую многопоточность, и эта форма находится во втором потоке.

Скажите, пожалуйста, как я могу ее решить.1007 *

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Я также использую потоки, и эта форма находится во втором потоке.

Мой хрустальный шар говорит, что вы использовали ShowDialog (), чтобы показать форму.Да, вызов Hide () в модальном диалоге закроет его.Обязательно, модальное диалоговое окно обычно отключает все окна в приложении.Если вы скрываете его, то у пользователя нет возможности вернуться в программу, не осталось окон для активации.То, что эта форма запускается в другом потоке, в противном случае не влияет на поведение.

Вам нужно будет вызвать Application.Run (new SomeForm ()), чтобы избежать этого.Теперь это не модально, и вы можете скрыть это без проблем.Но на самом деле, do избегайте отображения форм в потоках не-пользовательского интерфейса.Для этого нет никаких причин, ваш основной поток уже вполне способен.

1 голос
/ 23 сентября 2011

добавить следующие обработчики событий для изменения размера формы и уведомления о щелчке по событию

 private void Form_Resize(object sender, EventArgs e)
 {
    if (WindowState == FormWindowState.Minimized)
    {
        this.Hide();
    }
 }
 private void notifyIcon_Click(object sender, EventArgs e)
 {
    this.Show();
    this.WindowState = FormWindowState.Normal;
}

но это не ваше приложение

...