读书人

使用SizeChanged事件时最小化托盘有

发布时间: 2012-06-18 13:23:36 作者: rapoo

使用SizeChanged事件时,最小化托盘问题
private void frmMain_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide();
}
}

这段程序可以最小化托盘,已经实现了。

但是当光标停留在程序上,并点击任务栏运行的程序后也触发了SizeChanged这个事件被最小化了,请问怎么避免点击任务栏中的窗体不进入SizeChanged事件中,谢谢,只有最小化的时候触发。

[解决办法]
最小化时,记录一个变量标识吧,再次出发时判断 一下,并在适时的时候重置
[解决办法]
重写窗体 WndProc 方法

C# code
protected override void WndProc(ref Message m){    switch (m.Msg)    {        case 0x0112: // WM_SYSCOMMAND            {                if (m.WParam.ToInt32() == 0xF020) // SC_MINIMIZE                {                    if (m.LParam.ToInt32() > 0)                    {                        // 点击的                    }                }                break;            }        default:            break;    }    base.WndProc(ref m);}
[解决办法]
接3楼,if (m.LParam.ToInt32() > 0) 成立是点击的最小化按钮,不成立是点的任务栏
[解决办法]
我觉得你的最小化到托盘可以这样写:
1 拉一个NotifyIcon控件notifyIcon,为控件notifyIcon的属性Icon添加一个icon图标。
2 private void frmMain_SizeChanged(object sender, EventArgs e)
{
if(this.WindowState == FormWindowState.Minimized)
{
this.Hide();
this.notifyIcon1.Visible=true;
}
}
3 为notifyIcon1添加双击事件
private void notifyIcon1_Click(object sender, EventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
this.notifyIcon1.Visible = false;
}

4 也可以再给notifyIcon添加右键菜单


[解决办法]
加 return
C# code
if (m.LParam.ToInt32() > 0){    this.Hide();    return;}
[解决办法]
探讨
引用:
加 return

C# code

if (m.LParam.ToInt32() > 0)
{
this.Hide();
return;
}


感谢,散分之前问下0x0112 这样的是值什么东西,学习了是否可以像C++开发底层的东西,有没有相关资料了解下。

读书人网 >C#

热点推荐