Minimize to tray [duplicate]

大城市里の小女人 提交于 2019-12-01 16:48:54

问题


my app is for chatting, and i think if someone needs to hide it quick, but doesn't want to close it, i came up with this:

private void button6_Click(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Minimized; 
}

however, instead of going to the taskbar, i want it to appear (no popup) in the tray, just the apps icon, and when someone clicks it it needs to set this

this.WindowState = FormWindowState.Normal; 

Is this possible, how?

Also by system tray i mean the one in the bottom right corner, next to the time

I still can't get this to work, nothing appears in the notification bar if I do what you guys said (btw: this is the full code to minimise)

private void button6_Click(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Minimized;


}

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

Why isn't this working?


回答1:


Handle the form’s Resize event. In this handler, you override the basic functionality of the Resize event to make the form minimize to the system tray and not to the taskbar. This can be done by doing the following in your form’s Resize event handler:

  1. Check whether the form’s WindowState property is set to FormWindowState.Minimized. If yes, hide your form, enable the NotifyIcon object, and show the balloon tip that shows some information.
  2. Once the WindowState becomes FormWindowState.Normal, disable the NotifyIcon object by setting its Visible property to false.
  3. Now, you want the window to reappear when you double click on the NotifyIcon object in the taskbar. For this, handle the NotifyIcon’s MouseDoubleClick event. Here, you show the form using the Show() method.

In the form resize event, do the check there and hide the form

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

Then when clicking on the taskbar icon just restore it.

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

Refer:
How do I minimize a WinForms application to the notification area?
minimize app to system tray




回答2:


Use following code:

if (WindowState == FormWindowState.Minimized)
        {
            this.Hide();
        }

When you minimize the form, simply hide it. You will have to implement above code in Form_Resize event.

Then on clicking taskbar icon just restore its state as follows:

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

You will need to use notifyIcon_Click event for this purpose.

Hope its helpful.



来源:https://stackoverflow.com/questions/16140627/minimize-to-tray

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!