I am trying to get my application to minimize to the notification area and that part is working. The problem is, when I double click it, it is not showing the window again.

This is what I'm doing, I hope it's something simple I'm doing wrong:

public partial class Main : Form
{
    public Main()
    {
        InitializeComponent();
        CreateNotifyIcon();
    }

    private void CreateNotifyIcon()
    {
        mynotifyicon.BalloonTipIcon = ToolTipIcon.Info;
        mynotifyicon.BalloonTipText = "[Balloon Text when Minimized]";
        mynotifyicon.BalloonTipTitle = "[Balloon Title when Minimized]";
        mynotifyicon.Icon = Resources.lightning;
        mynotifyicon.Text = "[Message shown when hovering over tray icon]";
    }

    private void MainLoad(object sender, EventArgs e)
    {
        Resize += MainResize;
        MouseDoubleClick += MainMouseDoubleClick;
    }

    private void MainResize(object sender, EventArgs e)
    {
        try
        {
            if (FormWindowState.Minimized == WindowState)
            {
                mynotifyicon.Visible = true;
                mynotifyicon.ShowBalloonTip(3000);
                ShowInTaskbar = false;
                Hide();
            }

            else if (FormWindowState.Normal == WindowState)
            {
                mynotifyicon.Visible = false;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: " + ex.Message);
        }
    }

private void MainMouseDoubleClick(object sender, MouseEventArgs e)
{
  try
  {
    Show();
    WindowState = FormWindowState.Normal;
    ShowInTaskbar = true;
    mynotifyicon.Visible = false;
  }
  catch (Exception ex)
  {
    MessageBox.Show("Error: " + ex.Message);
  }
}

}

Something I forgot to mention was I put a debug stop on MainMouseDoubleClick and it's never hitting that point.

Thanks for the help!

** EDIT **

I changed the double click to have a try/catch and it's not being reached at all. Not even to the try.

有帮助吗?

解决方案

You need to add the click event to the notifyicon. At the moment you are registering the handler on the form.

mynotifyicon.MouseDoubleClick += MainMouseDoubleClick;

其他提示

Attach the MouseDoubleClick event at the end of CreateNotifyIcon:

mynotifyicon.MouseDoubleClick += MainMouseDoubleClick;

I would recommend renaming the event handler MainMouseDoubleClick to something more appropriate and unregistering it from the form's double click event.

I have used this and its working :

this.WindowState = FormWindowState.Normal;
this.Activate();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top