太白将进酒,共邀天下友

形位合成变动静,有无陈新映全域。 内外移思抽精明,连续离散归终果。

导航

[导入]类型MSN窗体行为的实现(.NET 2.0)

    当我们点击MSN窗体的"X"关闭程序时,MSN并不退出,而是最小化窗体,并且不在任务栏上显示.托盘区显示该程序.现在,我用VS2005实现类似的效果.
    .NET 2.0的窗体中多了一个"ShowInTaskbar"的属性,指示该应用程序是否显示在任务栏.有了这个属性,我们的实现就简单多了.
    首先,把窗体的ShowInTaskbar属性设为False,然后添加一个NotifyIcon控件,一个Menu控件,一个ContextMenu控件(用于和NotifyIcon关联).Menu和ContextMenu都只添加一个"Exit"菜单项,来控制窗体的行为.
    部分代码如下:

    窗体关闭事件代码
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { //窗体关闭事件 if (this.WindowState != FormWindowState.Minimized) { e.Cancel = true; this.WindowState = FormWindowState.Minimized; this.notifyIcon1.ShowBalloonTip(3000, "My App",
               "My App is not closed.\n it's minimized!", ToolTipIcon.Info); } }
    双击托盘区图标时间代码
private void notifyIcon1_DoubleClick(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.ShowInTaskbar = true; //重新显示窗口 this.Show(); this.WindowState = FormWindowState.Normal; } this.Activate();//激活窗口 this.Focus(); }
    点击Menu和ContextMenu的"Exit"菜单项事件
private void exitToolStripMenuItem_Click(object sender, EventArgs e) { //点击菜单中的"Exit"事件 this.WindowState = FormWindowState.Minimized; Close(); } private void exitToolStripMenuItem1_Click(object sender, EventArgs e) { //点击ContextMenu中的"Exit"事件 this.WindowState = FormWindowState.Minimized; Close(); }
----2005.12.15 10:26 星期四
文章来源:http://www.agilelabs.cn/blogs/woody/archive/2005/12/15/257.aspx

posted on 2006-01-16 11:08  太白飞仙  阅读(430)  评论(0编辑  收藏  举报