C# Winform 主視窗最小化隱藏至系統托盤中(適合小白)

Creator丶小鑫發表於2020-10-21

前言

和大家分享
一個如何將我們的程式隱藏到系統托盤中的小Demo,非常實用適合小白上手,話多說上專案。

專案

1. 開啟Visual Studio 2017,新建一個Winform專案,命名為 MissionBoardData。

2. 開啟新建專案的資料夾中,新建一個Image的資料夾,在裡面加入一個Icon的圖示,找張圖片直接百度線上Icon即可。

3. 開啟Form1.Designer.cs檔案將我們的Title更換成我們的專案名稱MissionBoardData,預設的Form1名稱就被我們更換了。

4. 然後在我們左側的工具箱中拖入兩個控制元件,分別為 NotifyIcon 控制元件和 ContextMenuStrip控制元件

NotifyIcon控制元件的作用是將我們的圖示放置在托盤中。命名為 :NotIcon

ContextMenuStrip控制元件是我們在托盤中可以對程式進行相應點選功能。命名為 :NotMenuStrip

    4.1 點選NotIcon,在視窗屬性的外觀中找到Icon選項選擇我們剛才放入檔案的Icon圖示,在ContextMenuStrip中選擇我們新建的NotMenuStrip,在Text中輸入NotMenuStrip(也可以自行輸入,這是系統托盤中顯示的的名稱)。

    4.2 點選NotMenuStrip,這時我們的主視窗中會顯示這個外掛,在請在此處鍵入中進行滑鼠雙擊,分別鍵入顯示;隱藏;退出

5. 現在可以直接點選執行,檢視效果,就會發現在我們的系統托盤中已經有了我們的程式圖示,並且滑鼠右鍵也會呈現我們剛才在NotMenuStrip鍵入的顯示;隱藏和退出,接下來我們給它們寫入命令。

6. 但是我們發現主程式的左上角還是預設的圖示,點選一下主程式視窗,然後在佈局中找到Icon進行替換即可。

7. 點選NotMenuStrip,雙擊我們剛才鍵入的顯示,會跳到他的Click事件中,依次將隱藏和退出也做如下操作。

8. 顯示

        private void 顯示ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Normal;//正常顯示
        }

9. 隱藏

        private void 隱藏ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Minimized;//沒了
        }

10. 退出

        private void 關閉ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //全乾死
            this.Dispose();
            this.Close();
        }

11.然後我們再執行程式發現我們在系統托盤中的圖示和它的三個功能就好使了,但是我們發現他每次都是在桌面不同地方呈現,所以我們給它加一個固定居中現在,將他加到主函式中和顯示函式中即可。

this.StartPosition = FormStartPosition.CenterScreen;//居中顯示

這樣呢一個實用方便的小操作到這裡就結束了,但是對於控制檯程式和WPF的程式操作上還是比較麻煩的需要引用自帶的程式集和user32.dll檔案才可以,但是呢會出現程式優先的問題,可以通過後臺執行緒的方式進行使用,大家可以自己嘗試一下。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MissionBoardData
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;//預設居中顯示
        }

        private void 顯示ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.StartPosition = FormStartPosition.CenterScreen;//居中顯示
            WindowState = FormWindowState.Normal;//正常顯示
        }

        private void 隱藏ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Minimized;//沒了
        }

        private void 關閉ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //全乾死
            this.Dispose();
            this.Close();
        }
    }
}

 

相關文章