標籤:
C# winForm啟動最小化到工作列右側通知欄並互動操作
一。主要功能:
(1)、程式啟動自動隱藏到工作列右側通知欄顯示。(與系統托盤同義)
(2)、雙擊系統托盤表徵圖顯示、隱藏視窗;
(3)、右擊系統托盤表徵圖提供三個菜單選項,“退出”、“隱藏”、“顯示”;
二。相關控制項:
1、建一個WinForm程式—IconForm,將Form屬性ShowInTaskbar改為false,這樣程式將不會在工作列中顯示。
2、將Form屬性WindowState選擇為 Minimized,以便起來自動最小化隱藏
3、在工具列中的“公用控制項”裡,拖入NotifyIcon控制項—notifyIcon1,這個是程式運行工作列右側通知區域表徵圖顯示控制項,為控制項notifyIcon的屬性Icon添加一個icon表徵圖,或從代碼中加入。
4、在工具列中的“菜單和工具列”裡,拖入ContextMenuStrip—contextMenuStrip1,這個控制項是右擊時關聯菜單。
5、右鍵notifyIcon1選擇屬性,將其屬性ContextMenuStrip改加為contextMenuStrip1,這個時候notifyIcon1和contextMenuStrip1兩個控制項就關聯了。
6、右鍵contextMenuStrip1,選擇屬性,進入Items,然後點擊“添加”,這裡添加三個菜單選項:exitMenuItem、hideMenuItem、showMenuItem,同時分別將其Text屬性改為:退出、隱藏和顯示。
三。主要代碼:
1、雙擊IconForm,即添加Load事件然後
//一 右擊表單,選擇屬性,轉到事件頁面,雙擊 Load,SizeChanged事件,給表單添加代碼
private void Form1_Load(object sender, EventArgs e) { //1.將Form屬性ShowInTaskbar改為false,這樣程式將不會在工作列中顯示。 //2.將Form屬性WindowState選擇為 Minimized,以便起來自動最小化隱藏。 string startup = Application.ExecutablePath; //取得程式路徑 int pp = startup.LastIndexOf("\\"); startup = startup.Substring(0, pp); string icon = startup + "\\testIcon.ico"; //3.一定為notifyIcon1其設定表徵圖,否則無法顯示在通知欄。或者在其屬性中設定 notifyIcon1.Icon = new Icon(icon); } private void Form1_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.Hide(); //或者是this.Visible = false; this.notifyIcon1.Visible = true; } }
//二 雙擊表單上的功能表項目,添加相關代碼
private void exitMenuItem_Click(object sender, EventArgs e) { if (MessageBox.Show("你確定要退出程式嗎?", "確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK) { notifyIcon1.Visible = false; this.Close(); this.Dispose(); Application.Exit(); } } private void hideMenuItem_Click(object sender, EventArgs e) { this.Hide(); } private void showMenuItem_Click(object sender, EventArgs e) { this.Show(); this.WindowState = FormWindowState.Normal; this.Activate(); }
//三 轉到表單設計模式,右擊notifyIcon1 ,選擇屬性,雙擊其中DoubleClick,添加相關代碼
private void notifyIcon1_DoubleClick(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Minimized; this.Hide(); } else if (this.WindowState == FormWindowState.Minimized) { this.Show(); this.WindowState = FormWindowState.Normal; this.Activate(); } }
四。完整的代碼如下:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace IconForm{ public partial class Form1 : Form { public Form1() { InitializeComponent(); }//說明,程式運行後自動隱藏到工作列右側的通知欄裡, //1 右擊選擇退出,隱藏,顯示//2 雙擊可以隱藏和顯示切換 //一 右擊表單,選擇屬性,轉到事件頁面,雙擊 Load,SizeChanged事件,給表單添加代碼 private void Form1_Load(object sender, EventArgs e) { //1.將Form屬性ShowInTaskbar改為false,這樣程式將不會在工作列中顯示。 //2.將Form屬性WindowState選擇為 Minimized,以便起來自動最小化隱藏。 string startup = Application.ExecutablePath; //取得程式路徑 int pp = startup.LastIndexOf("\\"); startup = startup.Substring(0, pp); string icon = startup + "\\testIcon.ico"; //3.一定為notifyIcon1其設定表徵圖,否則無法顯示在通知欄。或者在其屬性中設定 notifyIcon1.Icon = new Icon(icon); } private void Form1_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.Hide(); //或者是this.Visible = false; this.notifyIcon1.Visible = true; } }//二 雙擊表單上的功能表項目,添加相關代碼 private void exitMenuItem_Click(object sender, EventArgs e) { if (MessageBox.Show("你確定要退出程式嗎?", "確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK) { notifyIcon1.Visible = false; this.Close(); this.Dispose(); Application.Exit(); } } private void hideMenuItem_Click(object sender, EventArgs e) { this.Hide(); } private void showMenuItem_Click(object sender, EventArgs e) { this.Show(); this.WindowState = FormWindowState.Normal; this.Activate(); }//三 轉到表單設計模式,右擊notifyIcon1 ,選擇屬性,雙擊其中DoubleClick,添加相關代碼 private void notifyIcon1_DoubleClick(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Minimized; this.Hide(); } else if (this.WindowState == FormWindowState.Minimized) { this.Show(); this.WindowState = FormWindowState.Normal; this.Activate(); } } }}
C# winForm啟動最小化到工作列右側通知欄並互動操作