WinForm 之 窗口最小化到托盤及右鍵圖標顯示菜單

日常開發有時候需要實現窗口最小化到系統托盤,本文就來講講該如何實現winfrom最小化到系統托盤,本例子基于VS2019編寫。

用C#開發winform桌面程序時,程序啟動后,默認是顯示在桌面而且在任務欄中有對應的圖標。有的時候,需要在程序最小行后,將程序圖標僅僅顯示在系統托盤,不在任務欄中顯示。

Form最小化是指整個Form都縮小到任務欄上,但是窗體以Form的標題欄形式顯示在任務欄上, 若是想讓Form以Icon的形式顯示在任務欄右下角,則需要給Form添加一個NotifyIcon控件。

新建winform項目

打開VS2019,創建“新項目”->“windows窗體應用(.NET Framework)”。

添加NotifyIcon控件

1 如下為窗體添加一個 NotifyIcon 控件,并指定 Icon 和 Text 屬性

this.notifyIcon1.ContextMenuStrip?=?this.contextMenuStrip1;this.notifyIcon1.Icon?=?((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));this.notifyIcon1.Text?=?"文書助手";this.notifyIcon1.Visible?=?true;this.notifyIcon1.Click?+=?new?System.EventHandler(this.notifyIcon1_Click);this.notifyIcon1.DoubleClick?+=?new?System.EventHandler(this.notifyIcon1_DoubleClick);this.notifyIcon1.MouseClick?+=?new?System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);

2 可以為 添加NotifyIcon控件指定雙擊事件,雙擊還原,代碼如下:

private?void?notifyIcon1_DoubleClick(object?sender,?EventArgs?e){if?(WindowState?==?FormWindowState.Minimized){//還原窗體顯示????WindowState?=?FormWindowState.Normal;//激活窗體并給予它焦點this.Activate();//任務欄區顯示圖標this.ShowInTaskbar?=?true;//托盤區圖標隱藏//??notifyIcon1.Visible?=?false;}}

3 關閉窗體詢問是否直接退出或者最小化到托盤

private?void?toolStripMenuItem2_Click(object?sender,?EventArgs?e){if?(MessageBox.Show("是否確認退出程序?",?"退出",?MessageBoxButtons.OKCancel,?MessageBoxIcon.Question)?==?DialogResult.OK){//?關閉所有的線程this.Dispose();this.Close();}}

添加 ContextMenuStrip 控件

1 在窗體添加一個 ContextMenuStrip 控件,然后添加控件菜單項,最后綁定給 NotifyIcon 控件即可,如下:

this.contextMenuStrip1.Items.AddRange(new?System.Windows.Forms.ToolStripItem[]?{this.toolStripMenuItem1,this.toolStripMenuItem2});this.contextMenuStrip1.Name?=?"contextMenuStrip1";this.contextMenuStrip1.Size?=?new?System.Drawing.Size(101,?48);

2 綁定菜單給 NotifyIcon 控件

this.notifyIcon1.ContextMenuStrip?=?this.contextMenuStrip1;

3 為 ContextMenuStrip 控件的菜單項指定單擊事件,如下:

private?void?toolStripMenuItem1_Click(object?sender,?EventArgs?e){WindowState?=?FormWindowState.Normal;//任務欄區顯示圖標this.ShowInTaskbar?=?true;}

為 NotifyIcon 控件添加單擊事件

控制菜單的顯示及窗口的還原,代碼如下:

private?void?notifyIcon1_MouseClick(object?sender,?MouseEventArgs?e){if?(e.Button?==?MouseButtons.Right){contextMenuStrip1.Show();}if?(e.Button?==?MouseButtons.Left){this.Visible?=?true;this.WindowState?=?FormWindowState.Normal;this.ShowInTaskbar?=?true;}}

注意事項

“ContextMenuStrip”和“notifyIcon”若不是必要,請不要創建多個。

“notifyIcon”圖標需要.icon格式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286040.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286040.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286040.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言學習筆記--函數與指針

1. 函數類型 (1)C 語言中的函數有自己特定的類型,這個類型由返回值、參數類型和參數個數共同決定。如 int add(int i,int j)的類型為 int(int,int)。 (2)C 語言中通過 typedef 為函數類型重命名 typedef type name(parameter list);//如 typedef int f(int,int); 2. 函數指針 (…

C語言試題五十七之假定輸入的字符串中只包含字母和*號。請編寫函數function,它的功能是:刪除字符串中所有*號。在編寫函數時,不得使用c語言提供的字符串函數。

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 假定輸入的…

Wordpress:將圖片、post等的URL轉換為相對路徑

2019獨角獸企業重金招聘Python工程師標準>>> 例如上傳一張圖片,其地址是可能 http://127.0.0.1/wp-content/uploads/2015/12/1_.png, 問題是如果我們通過其他的電腦通過wordpress主機的公網IP訪問這張圖片時會提示找不到。 最好的處理方法是不…

MySQL數據庫的優化(下)MySQL數據庫的高可用架構方案

【51CTO獨家特稿】如果單MySQL的優化始終還是頂不住壓力時,這個時候我們就必須考慮MySQL的高可用架構(很多同學也愛說成是MySQL集群)了,目前可行的方案有:一、MySQL Cluster 優勢:可用性非常高,性能非常好。每份數據至…

【MATLAB統計分析與應用100例】案例018:matlab讀取Excel數據,進行K均值聚類分析

文章目錄 1. K均值聚類分析結果2. matlab完整代碼(1)讀取數據,并進行標準化變換(2)選取初始凝聚點,進行聚類(3)繪制輪廓圖1. K均值聚類分析結果 2. matlab完整代碼 (1)讀取數據,并進行標準化變換 [X, textdata] = xlsread(examp09_04.xls

C# 擴展object類 將string強制轉換成int

擴展代碼&#xff1a; public static class ClassExtend{/// <summary>/// 將object強制轉化為int/// </summary>/// <param name"o">要強制轉換的object</param>/// <param name"defaultValue">o為null或者轉換失敗的默認值…

Android之華為手機打開app奔潰提示java.io.FileNotFoundException: res/drawable/abc_vector_test.xml

1、問題 新建立的項目,華為手機運行起來提示如下 06-24 18:24:03.175 13314 13314 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appsinnova.android.booming/com.appsinnova.android.picper.MainActivity}: android.content…

CSS 零基礎到實戰(05)布局、盒子模型、彈性盒子【前端就業課 第二階段】

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 一、流動布局 流動布局有3種布局模型&#xff0c;分別是流動布局&…

DVWA系列之24 high級別上傳漏洞

最后再來分析high級別的代碼&#xff1a;這里首先有一條語句需要理解&#xff1a;$uploaded_ext substr($uploaded_name, strrpos($uploaded_name, .) 1);在這條語句里&#xff0c;首先利用strrpos() 函數來查找“.”在變量$uploaded_name中出現的位置&#xff0c;然后將得到…

WPF 基礎控件之 TreeView 樣式

其他基礎控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButton15.ToggleButton16.Slider TreeView 實現下面的效果1&#xff09;TreeView來實現動畫&#xff1b;Grid 分兩…

CSS文本樣式

裝飾&#xff1a; text-decoration&#xff1a;line-through&#xff08;貫穿線&#xff09;&#xff0c;underline&#xff08;下劃線&#xff09;&#xff0c;overline&#xff08;上劃線&#xff09; 對齊&#xff1a; text-align&#xff1a;center&#xff08;居中&#x…

利用系統錯誤日志監控磁盤健康狀況

一、故障現象 這個星期出現了兩塊磁盤不能讀寫&#xff0c;后面通過系統日志查看&#xff0c;關鍵字“EXT4-fs error對應某個磁盤”&#xff0c;因此利用zabbix&#xff0c;把系統日志抓取出來&#xff0c;作告警&#xff01; 二、步聚 1.機器太多&#xff0c;用到ansible的pla…

【MATLAB統計分析與應用100例】案例019:matlab讀取Excel數據,進行K均值聚類分析

文章目錄 1. 讀取數據,并進行標準化變換2. 進行模糊C均值聚類3. 查看聚類結果4. K均值聚類分析結果1. 讀取數據,并進行標準化變換 % 從文件examp09_05.xls中讀取數據 [xdata,textdata] = xlsread(examp09_05.xls); % 提取元胞數組textdata第1列的第4行至最后一行,即城市名稱…

HTML Animation 【前端就業課 第二階段】CSS 零基礎到實戰(06)

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 一、Animation 基礎 使用 Animation 可以設置幀動畫&#xff0c;與 tr…

史上最全的Visual Studio Code安裝C/C++環境,若不行頭砍給你。

一、下載Visual Studio Code安裝 下載鏈接地址 二、安裝C/C++插件 輸入c/c++, 然后點擊那里install 三、下載MinGW配置環境變量 下載地址 進入網站后不要點擊 "Download Lasted Version",往下滑,找到最新版的 "x86_64-posix-seh"。

C# 11 新特性:泛型 Attribute

之前使用JsonConverterAttribute&#xff0c;我們可以為任意類型自定義 Json 序列化。例如&#xff1a;[JsonConverter(typeof(UserJsonConverter))] public class User {public string Name { get; set; }public override string ToString(){return Name;} }public class User…

highcharts動態獲取數據生成圖表問題

動態獲取數據說白點就是從后臺傳值到前臺&#xff0c;前臺把這些值賦值給x軸與y軸&#xff08;這里指的是你X軸與Y軸都是變化的數據&#xff0c;如果你的X軸是固定的&#xff0c;像時間等等的那就另說&#xff09;。 柱狀圖的動態傳值&#xff1a; //獲取后臺數據var x [];//…

【MATLAB統計分析與應用100例】案例020:matlab從相關系數矩陣出發進行主成分分析

文章目錄 1. 定義相關系數矩陣PHO2. 調用pcacov函數根據相關系數矩陣作主成分分析3. 為了更加直觀,以元胞數組形式顯示結果4. 以元胞數組形式顯示主成分表達式1. 定義相關系數矩陣PHO PHO = [1 0.79 0.36 0.76 0.25 0.510.79 1 0.31 0.55 0.17 …

NA-NP-IE系列實驗實驗15:RIPv2 手工匯總

實驗15&#xff1a;RIPv2 手工匯總1.實驗目的 通過本實驗可以掌握&#xff1a;&#xff08;1&#xff09;RIPv2 路由的手工匯總&#xff08;2&#xff09;RIPv2 不支持CIDR 匯總&#xff08;3&#xff09;RIPv2 可以傳遞CIDR 匯總2.拓撲結構 實驗拓撲如圖 所示。3.實驗步驟 路由…

CSS3 做一個旋轉的立體3D正方形 動效核心【前端就業課 第二階段】CSS 零基礎到實戰(07)

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 一、transform-origin transform-origin 用于更改當前元素的中心點&am…