主要介紹如何創建和關閉 MDI 窗體,在大型項目和產品的開發中常常將系統設計為 MDI 界面。
047 禁用窗口上的關閉按鈕
本實例主要用到窗口處理函數 WndProc 的重寫方法,在該方法內部截獲單擊關閉窗口的信息,從而實現禁用關閉按鈕的功能。
創建一個項目,默認窗體為 Form1,在 Form1 窗體上添加一個 MenuStrip 控件。
namespace _047_ForbidCloseButton { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //程序加載完成後,當用鼠標單擊窗體上的關閉按鈕時,通過方法WndProc截獲關閉信息實現屏蔽 protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if ((m.Msg == WM_SYSCOMMAND) && ((int)m.WParam == SC_CLOSE)) { return; } base.WndProc(ref m); } //當退出應用程序時,選擇菜單欄中“文件”菜單下的“退出”選項即可 private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); //退出應用程序 } } }
048 實現動態系統托盤圖標
本實例主要用到 Timer 組件的 Tick 事件,在該事件中實現圖標的閃爍。
創建一個項目,默認窗體為 Form1,在 Form1 窗體上添加一個 GroupBox 控件、兩個 Button 控件、一個 NotifyIcon 控件以及一個 Timer 組件。設置 Timer 組件的 Interval 屬性值為 400。
namespace _048_DynamicStockIcon { public partial class Form1 : Form { public Form1() { InitializeComponent(); } #region 本程序聲明的變量 public static bool flag = false; #endregion //當點擊“閃爍”按鈕時,圖標出現閃動效果 private void flicker_Click(object sender, EventArgs e) { stocktimer.Enabled = true; //啟動計時器stocktimer } //當點擊“停止”按鈕時,圖標閃動效果消失 private void cease_Click(object sender, EventArgs e) { stocktimer.Enabled = false; //關閉計時器stocktimer stockIcon.Icon = Properties.Resources._1; //設置NotifyIcon控件的圖標 } //圖標的閃爍是通過計時器stocktimer的Tick事件 private void stocktimer_Tick(object sender, EventArgs e) { if (flag == false) //當標識值為假時 { stockIcon.Icon = Properties.Resources._1; //設定NotifyIcon控件的圖標 flag = true; //修改標識值為真 } else { stockIcon.Icon = Properties.Resources._2; //設定NotifyIcon控件的圖標 flag = false; //修改標識值為假 } } } }
049 實現氣泡提示窗口
本實例主要用到 NotifyIcon 控件的 ShowBalloonTip 方法,該方法用於在任務欄中持續顯示具有指定標題、文本和圖標的氣泡提示的指定時間。
創建一個項目,默認窗體為 Form1,在 Form1 窗體上添加一個 GroupBox 控件、兩個 Button 控件以及一個 NotifyIcon 控件。
namespace _049_AlveoliClewWindow { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void clewButton_Click(object sender, EventArgs e) { this.notifyIcon1.Visible = true; //設置NotifyIcon控件的可見性為真 //顯示氣泡提示 this.notifyIcon1.ShowBalloonTip(1000, "當前時間:", DateTime.Now.ToLocalTime().ToString(), ToolTipIcon.Info); } private void closeButton_Click(object sender, EventArgs e) { this.notifyIcon1.Visible = false; //設置NotifyIcon控件的可見性為假 } private void notifyIcon1_MouseMove(object sender, MouseEventArgs e) { //當光標移過NotifyIcon控件時將自動彈出提示信息 this.notifyIcon1.ShowBalloonTip(1000, "當前時間:", DateTime.Now.ToLocalTime().ToString(), ToolTipIcon.Info); } } }