這段時間一直在學習C#,看了書然後又在網上看了N多大神些的blog,然後自己學著做了一個像QQ托盤表徵圖那樣的小功能的Demo:
(1)、在視窗上點擊關閉按鈕或者最小化時將托盤顯示;
(2)、雙擊托盤表徵圖顯示視窗;
(3)、右鍵點擊托盤表徵圖提供三個菜單選項,“退出”、“隱藏”、“顯示”;
(4)、程式可以設定開機啟動,隱藏工作列顯示。就這四個小功能。
1、建一個WinForm程式—TestIconForm,將其屬性ShowInTaskbar改為false,這樣程式將不會在工作列中顯示;將MaximizeBox屬性設定為false,屏蔽掉最大化按鈕;把StartPosition屬性改為CerternScreen,這樣程式運行後,視窗將會置中顯示。
2、在工具列中的公用控制項裡,拖入NotifyIcon控制項—testNotifyIcon,這個是程式運行工作列右側通知區域表徵圖顯示控制項。
3、在工具列中的菜單和工具列裡,拖入ContextMenuStrip—testContextMenuStrip,這個控制項是右擊時關聯菜單。
4、右鍵testNotifyIcon選擇屬性,將其屬性ContextMenuStrip改加為testContextMenuStrip,這個時候1和2兩個步驟的兩個控制項就關聯了,用於完成上面(3)功能。
5、右鍵testContextMenuStrip選擇屬性,進入Items,然後點擊“添加”,這裡添加三個菜單選項:exitMenuItem、hideMenuItem、showMenuItem,同時分別將其Text屬性改為:退出、隱藏和顯示。
準備工作就這些,下面是大致代碼:
1)、雙擊TestIconForm,即添加Load事件然後
代碼
private void Form1_Load(object sender, EventArgs e)
{
testNotifyIcon.Icon = new Icon("e:\\MyPicture\\testIcon.ico");
//取得程式路徑
string startup = Application.ExecutablePath;
//class Micosoft.Win32.RegistryKey. 表示Window註冊表中項級節點,此類是註冊表裝
RegistryKey rKey = Registry.LocalMachine;
RegistryKey autoRun = rKey.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
try
{
autoRun.SetValue("BookServer", startup);
rKey.Close();
}
catch (Exception exp)
{
MessageBox.Show(exp.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
添加Form_Closing,SizeChanged事件
代碼
private void Form1_FormClosing(object sender, FormClosingEventArgs e) //關閉按鈕事件
{
e.Cancel = true;
this.Hide();
}
private void Form1_SizeChanged(object sender, EventArgs e) //最小化事件按鈕
{
this.Hide();
}
2)、給testNotifyIcon添加MouseDoubleClick事件
代碼
private void testNotifyIcon_MouseDoubleClick(object sender, MouseEventArgs e) // 左鍵雙擊,顯示
{
if (e.Button == MouseButtons.Left)
{
this.Show();
this.WindowState = FormWindowState.Normal;
this.Activate();
}
}
3)、進入TestIconForm單擊testContextMenuStrip,然後可以看到“退出”、“隱藏”、“顯示”,分別雙擊,添加相應的事件
代碼
private void exitMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("你確定要退出終端服務程式嗎?", "確認", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
testNotifyIcon.Visible = false;
this.Close();
this.Dispose();
Application.Exit();
}
}
private void showMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
}
private void hideMenuItem_Click(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
this.Activate();
}