C# 托盘 NotifyIcon 问题

电脑不需要休息吗? 2010-09-10 05:03:11
我写了个有托盘的程序,结果在前几次最小化和双击托盘的时候正常,测试过几次后就出现了不显示界面的现象。
图标已经设置,前几次正常。
请各位帮忙看看吧

代码如下:

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Visible = true;
this.ShowInTaskbar = true;

this.WindowState = FormWindowState.Normal;
this.notifyIcon1.Visible = false;
this.Activate();
}

private void frmMain_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.notifyIcon1.Visible = true;
//this.Hide();
this.Visible = false;
this.ShowInTaskbar = false;
}
}

//右键按钮显示界面
private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Visible = true;
this.ShowInTaskbar = true;

this.WindowState = FormWindowState.Normal;
this.notifyIcon1.Visible = false;
this.Activate();
}

...全文
233 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyyl_qq 2011-07-29
  • 打赏
  • 举报
回复
试试这个:
FormWindowState oldState = FormWindowState.Normal;
private void FrmMain_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
}
else
{
oldState = this.WindowState;
}
}

private void notifyIcon1_MouseDoubleClick(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.WindowState = oldState;
this.Show();
cmsHide.Enabled = true;
cmsShow.Enabled = false;
}
  • 打赏
  • 举报
回复
如果是逻辑问题应该每次都出问题的呀
缭绕飘渺 2010-09-14
  • 打赏
  • 举报
回复
你的frmMain_Resize事件的处理是否妥当
自己再看看
你隐藏了
大哥
而且你在notifyIcon1_MouseDoubleClick有改变窗体的语句
如果 this.WindowState = FormWindowState.Normal;引起了窗体改变
那么你的窗体还能见吗?
所以是你的思维错误
只所以有时错,是因为窗体当前State的问题
你再想想看是不是
jeven_xiao 2010-09-14
  • 打赏
  • 举报
回复
最小化隐藏在任务栏中了!
代码是没有问题的
  • 打赏
  • 举报
回复
求教啊!分不够可以再加!
shellwin 2010-09-13
  • 打赏
  • 举报
回复
可以参考 http://blog.csdn.net/shellwin/archive/2010/08/02/5782487.aspx
龍月 2010-09-13
  • 打赏
  • 举报
回复
这是我的一段代码:

#region 窗体最小化到状态栏
private void MainForm_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
notifyIcon1.Visible = true;
this.Hide();
this.ShowInTaskbar = false;
}
}

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.ShowInTaskbar == false)
{
notifyIcon1.Visible = true;
this.ShowInTaskbar = false;
this.Show();
this.Activate();
this.WindowState = FormWindowState.Normal;
}
}
#endregion


private void notifyIcon1_MouseMove(object sender, MouseEventArgs e)
{
notifyIcon1.Text = string.Format( "QQ:" +UserHelp.userNickName+"("+UserHelp.loginId+")"+"\n声音: 开启 \n消息提醒框: 关闭 \n会话消息: 任务栏头像闪动");
}
  • 打赏
  • 举报
回复
有没有哪位大哥帮忙啊?小弟先谢谢了!
  • 打赏
  • 举报
回复
问题是不是每次最小化都这样,而是前几次最小化没问题,在后来的某一次会出现这种情况。
龍月 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shangxl 的回复:]
我的问题不是这个啊,是双击显示界面的时候没有显示出界面,同时通知区域的图标也不见了,但进程还在.
[/Quote]
那就是 最小化了 但是 不显示在 任务栏 也不显示了 小图标了
肯定是自己代码有问题
  • 打赏
  • 举报
回复
我的问题不是这个啊,是双击显示界面的时候没有显示出界面,同时通知区域的图标也不见了,但进程还在.
wgc 2010-09-13
  • 打赏
  • 举报
回复
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show();
this.ShowInTaskbar = true;
notifyIcon1.Visible = false;
this.WindowState = FormWindowState.Normal;
this.Activate();
}

private void Form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
notifyIcon1.Visible = true;
this.Hide();
this.ShowInTaskbar = false;
}
}

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧