Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Minimize to tray [duplicate]

Tags:

c#

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?

like image 586
Connor Avatar asked Apr 22 '13 06:04

Connor


2 Answers

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

like image 95
Niranjan Singh Avatar answered Sep 23 '22 20:09

Niranjan Singh


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.

like image 35
Freelancer Avatar answered Sep 22 '22 20:09

Freelancer