开发者

Minimize form to system tray

开发者 https://www.devze.com 2023-04-07 15:13 出处:网络
I want to hide my form while keeping my application running in background. I\'ve used notifyIcon and it remains always visible.

I want to hide my form while keeping my application running in background. I've used notifyIcon and it remains always visible.

I've used "this.Hide();" to hide my form but开发者_Go百科 unfortunately my application gets close (no exception).

I am also using threading and this form is on second thread.

Please tell me how can I solve it.


I am also using threading and this form is on second thread.

My crystal ball says that you've used ShowDialog() to show the form. Yes, calling Hide() on a modal dialog will close it. Necessarily so, a modal dialog normally disables all of the windows in the application. If you hide it then there's no way for the user to get back to the program, there are no windows left to activate. That this form runs on another thread otherwise doesn't factor into the behavior.

You'll need to call Application.Run(new SomeForm()) to avoid this. Now it isn't modal and you can hide it without trouble. But really, do avoid showing forms on non-UI threads. There's no reason for it, your main thread is already quite capable.


add the following event handlers for form resize and notify icon click event

 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;
}

but this is not close you application

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号