Question

I have an application that goes to system tray when I minimize it. I created a notify icon to handle some secondary options for the app using right click from mouse using that notify icon.

But I would like the application not to disappear from task bar when I minimize it and mantain the notify icon on system tray.

Is there any way to acomplish thtat?

EDIT: When I minimize the application, I use the Hide() command to use the NotifyIcon. But I want it to remain on task bar.

See code here:

private void MainWindow_OnStateChanged(object sender, EventArgs e)
{
    if (WindowState != WindowState.Minimized) return;
    Hide();
    ShowInTaskbar = true;
    if (notifyIcon != null)
        notifyIcon.ShowBalloonTip(2000);
}

Note: This NotifyIcon is embeded on a WPF container programatically like this:

DrawNotifyIcon();

private void DrawNotifyIcon()
    {
        try
        {
            string source = Path.GetDirectoryName(Assembly.GetAssembly(typeof(MainWindow)).CodeBase);
            string tmpSource = source + @"\Resources\mainico.ico";
            tmpSource = tmpSource.Replace(@"file:\", "");
            // notify Icon
            notifyIcon = new NotifyIcon
                {
                    BalloonTipTitle = Cultures.Resources.Title,
                    BalloonTipText = Cultures.Resources.NotifyIconExecuting,
                    BalloonTipIcon = ToolTipIcon.Info,
                    Icon = new System.Drawing.Icon(tmpSource)
                };
            notifyIcon.DoubleClick += notifyIcon_DoubleClick;
            notifyIcon.Click += notifyIcon_Click;
            notifyIcon.MouseUp += notifyIcon_MouseUp;

            // Create ContextMenu
            contextMenu = new ContextMenuStrip();
            contextMenu.Closing += contextMenu_Closing;

            // Exit item
            menuItemExit = new ToolStripMenuItem
                {
                    Text = Cultures.Resources.Exit,
                    Image = Cultures.Resources.close
                };
            menuItemExit.Click += menuItemExit_Click;

            // Restore item
            menuItemRestore = new ToolStripMenuItem
                {
                    Text = Cultures.Resources.Restore,
                    Image = Cultures.Resources.restore1
                };
            menuItemRestore.Click += menuItemRestore_Click;

            // Active or inactive log
            menuItemActive = new ToolStripMenuItem
                {
                    Text = Cultures.Resources.On,
                    Image = Cultures.Resources.green,
                    Checked = true
                };
            menuItemActive.Click += menuItemActive_Click;
            menuItemActive.CheckStateChanged += menuItemActive_CheckStateChanged;

            // Order of appearance of ContextMenu items
            contextMenu.Items.Add(menuItemActive);
            contextMenu.Items.Add("-");
            contextMenu.Items.Add(menuItemRestore);
            contextMenu.Items.Add(menuItemExit);

            notifyIcon.ContextMenuStrip = contextMenu;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

Any idea on how to keep both icons for WPF?

Était-ce utile?

La solution

Well, Its not possible to show forms in taskbar which is in hidden state. Still you can forcefully minimized the form. try below modified code :

private void MainWindow_OnStateChanged(object sender, EventArgs e)
{
    if (WindowState != WindowState.Minimized) return;
    this.ShowInTaskbar = true;
    if (notifyIcon != null)
    notifyIcon.ShowBalloonTip(2000);
    this.WindowState = FormWindowState.Minimized;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top