我在窗体上放了个NotifyIcon,想实现窗口最小化后隐藏,双击NotifyIcon后显视窗口并恢复大小,很
简单的逻辑的,下面是代码:private void MainForm_Resize(object sender, System.EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.Visible = false;
}
}private void notifyIcon_DoubleClick(object sender, System.EventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
}如果在窗口正常大小状态时最小化符合预期效果,但是如果窗口在最大化时最小化,然后再双击NotifyIcon窗口又恢复成最大化,可这时如果点右上角中间的还原按钮,窗口并不还原成正常大小,而是还原化成最小化时的大小显视在屏幕上,不符合还原按钮的规则了.怎样才能恢复成最大化后点"还原",还原成正常大小的窗口?  不知道这样讲能不能明白 :)

解决方案 »

  1.   

    private void notifyIcon1_DoubleClick(object sender,System.EventArgs e)
    {
    if(this.Visible==false)
    {
    this.WindowState=FormWindowState.Maximized;
    this.Visible=true;
    this.Activate();
    }
    else
    {
    this.WindowState=FormWindowState.Minimized;
    this.Visible=false;
    } }
    这样就可以了………
    你双击后则隐藏/显示窗体,点最大化/还原按钮都可以使用
      

  2.   

    同意 SqlDataAdapter(咸蛋超人) ,因为从代码逻辑上看不出问题.
      

  3.   

    我试了一下,是有这个bug,我也遇到了我也不知道原因,感觉如果想解决,必须要随时记录窗体的大小了
      

  4.   

    为什么就想到是bug呢我就不觉得是bug正常状态:
    WindowState = Normal, Size < 屏幕大小, Location > (0, 0)最小化之后,
    WindowState = Minimized, Size/Location 没变, Visible = false双击trayicon之后,
    WindowState = Normal, Size/Location 也没变最大化之后
    WindowState = Maximized, Size = 屏幕大小,Location = (0, 0)最小化之后,
    WindowState = Minimized, Size/Location 没变,Visible = false双击icon之后——注意
    WindowState = /*注意*/Normal, Size/Location没变——全屏大小知道问题所在了没?因为你无论窗体原来的状态如何都一律设为Normal,导致你认为出现“bug”--------解决方法:在 Resize 方法里保存当前 WindowState 值到一个字段里(如果已经是Minimized就不要保存)双击icon之后,WindowState 赋值为保存的这个值。当然如果找到 "OnMaximized" "OnRestore" 这样的事件更好,但是1.1模型里没有,我也不懂Message,就只能用Resize来代替了