主要介紹如何創建和關閉 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);
}
}
}