您的位置:首页 > 其它

让WinForm应用程序最小化图标显示在任务栏并提供右击菜单

2010-11-16 09:04 330 查看
首先应该把MDI窗体ShowInTaskbar设置为true,在vs2008中默认就是true;

然后分别添加NotifyIcon及其ContextMenuStrip控件;

再把NotifyIcon的ContextMenuStrip属性值指向ContextMenuStrip,并且把NotifyIcon的Icon指定一张*.Icon格式的图片文件以便显示在任务栏中;

为NotifyIcon添加名称为notifyIconSystem_MouseDoubleClick的MouseDoubleClick事件;

为MDI窗体添加名为MainForm_SizeChanged的SizeChanged事件;

以上基本上就可以完成我们相应的需求了,然后就是实现了。在这里我要求Application在应用时任务栏不显示相应的图标,只有当在最小化时才显示其图标,并且在右击任务栏上的图标提供简单的功能(隐藏,显示,关闭,关于),双击图标时还原Application窗体。

具体代码如下:

//窗体加载
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_最小化的右击图标菜单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐