主要介绍如何创建和关闭 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); } } }