0

閉じるボタンをクリックするとトレイメニューに非表示になるようにするwinformsアプリケーションがあります。これでtrayiconとnotifyiconを使用しました。以下はコードです

システムトレイへの最小化用

public void MinimizeToTray()
{
    try
    {
        this.WindowState = FormWindowState.Minimized;
        TrayIcon.Visible = true;
        TrayIcon.ShowBalloonTip(1000);
        ShowInTaskbar = false;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

//Load the tray menu
private void LoadTrayMenu()
{
    TrayMenu.Items.Add("Exit");
    TrayMenu.Items[0].Click += new System.EventHandler(this.Dispose_Click);
    TrayIcon.ContextMenuStrip = TrayMenu;
}

//Close the application
private void Dispose_Click(object Sender, EventArgs e)
{
    TrayIcon.Visible = false;
    TrayIcon.Icon = null;
    Application.Exit();
}

上記の部分は私にとってはうまく機能します。つまり、アプリケーションをトレイメニューに最小化してから、元のフォームにサイズ変更して閉じることができます。しかし、アプリケーションがシステム トレイに最小化されている場合、そのときに All-Tab を押すと、アプリケーションを表示できます。システムトレイからクリックする代わりに、アプリケーションを元のフォームに戻すことができます。

私はこれらの例を見ました

WinForms アプリケーションを通知領域に最小化するにはどうすればよいですか?

Alt-Tab プログラム スイッチャーからウィンドウを非表示にする最良の方法は?

しかし、アプリケーションがシステム トレイにあるときに、Alt-Tab スイッチャーからアプリケーションを非表示にする方法を示すものはありません。

アプリケーションがシステム トレイにないときに、Alt-Tab スイッチャーでアプリケーションが表示されていれば問題ありません。

どんな助けでもいただければ幸いです

4

1 に答える 1

0

私のコメントで述べたように、Show() と Hide() を使用してください。新しいフォームを作成し、ボタンを追加し、ボタンをダブルクリックして、button1_Click のコードを追加します。Windows 7 x64 で C# (.NET 4)、Visual Studio 2012 を使用しています。

正常に動作します。Windows は、Alt+Tab でも Win+Tab でも表示されません。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace TrayIconExample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private NotifyIcon icon;
        private void button1_Click(object sender, EventArgs e)
        {
            icon = new NotifyIcon
            {
                Icon = new Icon(@"C:\Program Files (x86)\Winspector\class-icons\#32768.ico"),
                Visible = true
            };
            Hide();
        }
    }
}

Show() の部分はあなたに任せます。

于 2014-02-28T12:41:12.837 に答える