using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows;
using System.Runtime.InteropServices;
namespace W_TestDemo
{
//NotifyIcon為托盤控件
public partial class Form2 : Form
{
//這里在窗體上沒有拖拽一個(gè)NotifyIcon控件鳍徽,而是在這里定義了一個(gè)變量
private NotifyIcon notifyIcon = null;
public Form2()
{
InitializeComponent();
//調(diào)用初始化托盤顯示函數(shù)
InitialTray();
RegisterHotKey(this.Handle, 10, MODKEY.ALT, Keys.X);
RegisterHotKey(this.Handle, 11, MODKEY.ALT, Keys.S);
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312)
{
switch (m.WParam.ToInt32())
{
case 10:
{
this.Visible = true;
this.Activate();
}
break;
case 11:
{
this.Visible = true;
this.Activate();
}
break;
default:
break;
}
return;
}
base.WndProc(ref m);
}
//要定義熱鍵的窗口的句柄
//定義熱鍵ID(不能與其它ID重復(fù))int id,
//標(biāo)識(shí)熱鍵是否在按Alt啤它、Ctrl舱卡、Shift胖笛、Windows等鍵時(shí)才會(huì)生效KeyModifiers fsModifiers, Keys vk //定義熱鍵的內(nèi)容
[DllImport("user32.dll")]
public static extern bool RegisterHotKey(IntPtr wnd, int id, MODKEY mode, Keys vk);
[DllImport("user32.dll")]
public static extern bool UnregisterHotKey(IntPtr wnd, int id);
[Flags()]
public enum MODKEY
{
None = 0,
ALT = 0x0001,
CTRL = 0x0002,
SHIFT = 0x0004,
WIN = 0x0008,
}
private void Form1_Load(object sender, EventArgs e)
{
//這里寫其他代碼
}
/// <summary>
/// 窗體關(guān)閉的單擊事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
//通過這里可以看出孟害,這里的關(guān)閉其實(shí)不是真正意義上的“關(guān)閉”,而是將窗體隱藏,實(shí)現(xiàn)一個(gè)“偽關(guān)閉”
this.Hide();
}
private void InitialTray()
{
//隱藏主窗體
this.Hide();
//實(shí)例化一個(gè)NotifyIcon對(duì)象
notifyIcon = new NotifyIcon();
//托盤圖標(biāo)氣泡顯示的內(nèi)容
notifyIcon.BalloonTipText = "正在后臺(tái)運(yùn)行";
//托盤圖標(biāo)顯示的內(nèi)容
notifyIcon.Text = "窗體托盤后臺(tái)運(yùn)行測(cè)試程序";
//注意:下面的路徑可以是絕對(duì)路徑沧奴、相對(duì)路徑。但是需要注意的是:文件必須是一個(gè).ico格式
notifyIcon.Icon = new System.Drawing.Icon("C:/Users/veepoo-cd/Desktop/veepoo.ico"); //絕對(duì)路徑
//notifyIcon.Icon =
//true表示在托盤區(qū)可見歇竟,false表示在托盤區(qū)不可見
notifyIcon.Visible = true;
//氣泡顯示的時(shí)間(單位是毫秒)
notifyIcon.ShowBalloonTip(2000);
notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(notifyIcon_MouseClick);
////設(shè)置二級(jí)菜單
//MenuItem setting1 = new MenuItem("二級(jí)菜單1");
//MenuItem setting2 = new MenuItem("二級(jí)菜單2");
//MenuItem setting = new MenuItem("一級(jí)菜單", new MenuItem[]{setting1,setting2});
//幫助選項(xiàng)挥唠,這里只是“有名無實(shí)”在菜單上只是顯示,單擊沒有效果焕议,可以參照下面的“退出菜單”實(shí)現(xiàn)單擊事件
MenuItem help = new MenuItem("幫助");
help.Click += new EventHandler(help_Click);
//關(guān)于選項(xiàng)
MenuItem about = new MenuItem("關(guān)于");
about.Click += new EventHandler(about_Click);
//退出菜單項(xiàng)
MenuItem exit = new MenuItem("退出");
exit.Click += new EventHandler(exit_Click);
////關(guān)聯(lián)托盤控件
//注釋的這一行與下一行的區(qū)別就是參數(shù)不同宝磨,setting這個(gè)參數(shù)是為了實(shí)現(xiàn)二級(jí)菜單
//MenuItem[] childen = new MenuItem[] { setting, help, about, exit };
MenuItem[] childen = new MenuItem[] {help,about,exit};
notifyIcon.ContextMenu = new ContextMenu(childen);
//窗體關(guān)閉時(shí)觸發(fā)
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
}
/// <summary>
/// 鼠標(biāo)單擊
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void notifyIcon_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
//鼠標(biāo)左鍵單擊
if (e.Button == MouseButtons.Left)
{
//如果窗體是可見的,那么鼠標(biāo)左擊托盤區(qū)圖標(biāo)后盅安,窗體為不可見
if (this.Visible == true )
{
//this.Visible = false;
}
else
{
this.Visible = true;
this.Activate();
}
}
}
/// <summary>
/// 幫助選項(xiàng)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void help_Click(object sender, EventArgs e)
{
MessageBox.Show("幫助唤锉,哈哈");
}
/// <summary>
/// 關(guān)于選項(xiàng)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void about_Click(object sender, EventArgs e)
{
MessageBox.Show("關(guān)于,哈哈");
}
/// <summary>
/// 退出選項(xiàng)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void exit_Click(object sender, EventArgs e)
{
//退出程序
System.Environment.Exit(0);
}
}
}
Winform托盤控件NotifyIcon
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門虹菲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靠胜,“玉大人,你說我怎么就攤上這事±四” “怎么了陕习?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長郑藏。 經(jīng)常有香客問我衡查,道長,這世上最難降的妖魔是什么必盖? 我笑而不...
- 正文 為了忘掉前任拌牲,我火速辦了婚禮,結(jié)果婚禮上歌粥,老公的妹妹穿的比我還像新娘塌忽。我一直安慰自己,他們只是感情好失驶,可當(dāng)我...
- 文/花漫 我一把揭開白布土居。 她就那樣靜靜地躺著,像睡著了一般嬉探。 火紅的嫁衣襯著肌膚如雪擦耀。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼汽纤,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了福荸?” 一聲冷哼從身側(cè)響起蕴坪,我...
- 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逞姿,沒想到半個(gè)月后辞嗡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡滞造,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年续室,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谒养。...
- 正文 年R本政府宣布,位于F島的核電站瞳购,受9級(jí)特大地震影響话侄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜学赛,卻給世界環(huán)境...
- 文/蒙蒙 一年堆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盏浇,春花似錦变丧、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至滴劲,卻和暖如春攻晒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背班挖。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長得像乙嘀,于是被迫代替她去往敵國和親末购。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- Xamarin XAML語言教程構(gòu)建ControlTemplate控件模板 控件模板ControlTemplate...
- 項(xiàng)目地址:https://github.com/razerdp/FriendCircle一起擼個(gè)朋友圈吧這是本文所...
- 最近做的一個(gè)項(xiàng)目站欺,需要用戶自定義報(bào)表和打印功能,了解了許多關(guān)于.NET報(bào)表插件,最終選擇了FastReport這款...