- 首先应该把MDI窗体ShowInTaskbar设置为true,在vs2008中默认就是true;
- 然后分别添加NotifyIcon及其ContextMenuStrip控件;
- 再把NotifyIcon的ContextMenuStrip属性值指向ContextMenuStrip,并且把NotifyIcon的Icon指定一张*.Icon格式的图片文件以便显示在任务栏中;
- 为NotifyIcon添加名称为notifyIconSystem_MouseDoubleClick的MouseDoubleClick事件;
- 为MDI窗体添加名为MainForm_SizeChanged的SizeChanged事件;
以上基本上就可以完成我们相应的需求了,然后就是实现了。在这里我要求Application在应用时任务栏不显示相应的图标,只有当在最小化时才显示其图标,并且在右击任务栏上的图标提供简单的功能(隐藏,显示,关闭,关于),双击图标时还原Application窗体。
具体代码如下:
Code
//窗体加载
private void MainForm_Load(object sender, EventArgs e)
{
//.
this.notifyIconSystem.Visible = false;
}
//双击任务栏图标时,还原窗口
private void notifyIconSystem_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
this.WindowState = FormWindowState.Normal;
this.Activate();
this.notifyIconSystem.Visible = false;
}
//添加窗体最小化事件
private void MainForm_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)//最小化
{
this.ShowInTaskbar = false;
this.notifyIconSystem.Visible = true;
}
}
#region BEGIN_最小化的右击图标菜单
private void menuItemIcon_Hide_Click(object sender, EventArgs e)
{
//this.WindowState = FormWindowState.Minimized;
this.Hide();
this.ShowInTaskbar = false;
this.notifyIconSystem.Visible = true;
}
private void menuItemIcon_Show_Click(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
this.Activate();
}
private void menuItemIcon_About_Click(object sender, EventArgs e)
{
//
}
private void menuItemIcon_Exit_Click(object sender, EventArgs e)
{
ApplicationExit(null);
}
#endregion END_最小化的右击图标菜单
本人初学WinForm开发,以上内容是个人整理以便有需而用,其若有误,烦请帮忙指点更正,衷心感谢!BlackCore敬上!