簡體   English   中英

最小化應用程序到系統托盤

[英]minimize app to system tray

我有一個由 C# 和 Visual Studio 2010 提供支持的 Windows 窗體應用程序。

如何將我的應用程序最小化到系統托盤(不是任務欄),然后在系統托盤中雙擊時將其帶回來? 任何的想法? 另外,如何在系統托盤的圖標中創建一些菜單,當我右鍵單擊它時,它會顯示一個菜單,如登錄、斷開連接、連接等。 另外,有什么方法可以像從系統托盤彈出的氣球一樣顯示嗎?

PS:我已經加了一個notifyIcon,但是不知道怎么用。

處理表單的Resize事件。 在此處理程序中,您將覆蓋Resize事件的基本功能,以使表單最小化到系統托盤而不是任務欄。 這可以通過在表單的Resize事件處理程序中執行以下操作來完成:檢查表單的WindowState屬性是否設置為FormWindowState.Minimized。 如果是,請隱藏表單,啟用NotifyIcon對象,並顯示顯示某些信息的氣球提示。 一旦WindowState變為FormWindowState.Normal,通過將其Visible屬性設置為false來禁用NotifyIcon對象。 現在,您希望在雙擊任務欄中的NotifyIcon對象時再次出現該窗口。 為此,處理NotifyIcon的MouseDoubleClick事件。 在這里,您使用Show()方法顯示表單。

private void frmMain_Resize(object sender, EventArgs e)
{
    if (FormWindowState.Minimized == this.WindowState)
    {
       mynotifyicon.Visible = true;
       mynotifyicon.ShowBalloonTip(500);
       this.Hide();
    }

    else if (FormWindowState.Normal == this.WindowState)
    {
       mynotifyicon.Visible = false;
    }
}

我發現這可以完成整個解決方案。 上面的答案無法從任務欄中刪除窗口。

private void ImportStatusForm_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(3000);
        this.ShowInTaskbar = false;
    }
}

private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
    this.WindowState = FormWindowState.Normal;
    this.ShowInTaskbar = true;
    notifyIcon.Visible = false;
}

最好使用表單設計器設置通知圖標控件的以下屬性。

this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; //Shows the info icon so the user doesn't think there is an error.
this.notifyIcon.BalloonTipText = "[Balloon Text when Minimized]";
this.notifyIcon.BalloonTipTitle = "[Balloon Title when Minimized]";
this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon"))); //The tray icon to use
this.notifyIcon.Text = "[Message shown when hovering over tray icon]";

我會去的

private void Form1_Resize(object sender, EventArgs e)
{
     if (FormWindowState.Minimized == this.WindowState)
     {
          notifyIcon1.Visible = true;
          notifyIcon1.ShowBalloonTip(500);
          this.Hide();    
     }
     else if (FormWindowState.Normal == this.WindowState)
     {
          notifyIcon1.Visible = false;
     }
}

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

不要忘記將圖標文件添加到您的notifyIcon,否則它將不會出現在托盤中。

試試這個

 private void Form1_Load(object sender, EventArgs e)
    {
        notifyIcon1.BalloonTipText = "Application Minimized.";
        notifyIcon1.BalloonTipTitle = "test";
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        if (WindowState == FormWindowState.Minimized)
        {
            ShowInTaskbar = false;
            notifyIcon1.Visible = true;
            notifyIcon1.ShowBalloonTip(1000);
        }
    }

    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        ShowInTaskbar = true;
        notifyIcon1.Visible = false;
        WindowState = FormWindowState.Normal;
    }

這是我在我的應用程序中使用的方法,它相當簡單和自我解釋,但我很樂意提供更多細節來回答您的意見。

    public Form1()
    {
        InitializeComponent();

        // When window state changed, trigger state update.
        this.Resize += SetMinimizeState;

        // When tray icon clicked, trigger window state change.       
        systemTrayIcon.Click += ToggleMinimizeState;
    }      

    // Toggle state between Normal and Minimized.
    private void ToggleMinimizeState(object sender, EventArgs e)
    {    
        bool isMinimized = this.WindowState == FormWindowState.Minimized;
        this.WindowState = (isMinimized) ? FormWindowState.Normal : FormWindowState.Minimized;
    }

    // Show/Hide window and tray icon to match window state.
    private void SetMinimizeState(object sender, EventArgs e)
    {    
        bool isMinimized = this.WindowState == FormWindowState.Minimized;

        this.ShowInTaskbar = !isMinimized;           
        systemTrayIcon.Visible = isMinimized;
        if (isMinimized) systemTrayIcon.ShowBalloonTip(500, "Application", "Application minimized to tray.", ToolTipIcon.Info);
    }

單擊系統托盤中的圖像,您可以驗證框架是否可見,然后您必須設置Visible = true或false

...並且右鍵單擊通知菜單向表單添加上下文菜單並編輯它,並通過雙擊它們為每個上下文菜單設置鼠標點擊事件,然后通過選擇notifyicon屬性中的ContextMenuStrip將其附加到notifyicon1。

this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;

this.WindowState = FormWindowState.Minimized;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM