我做了一个小程序,如果登陆成功的话就最小化窗口,
添加了最小化事件如下:
private void Form1_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Hide();         
                //this.ShowInTaskbar = false; //加上这句后,出现异常 
                this.notifyIcon1.Visible = true;
                this.notifyIcon1.ShowBalloonTip(1, "Lin-Loginer", lbinfo.Text, ToolTipIcon.Info);
            }
        }
我也在一个按钮的点击事件添加了以下代码:
private void btlogin_Click(object sender, EventArgs e)
        {
             //……
             //if登录成功,则最小化
             this.WindowState = FormWindowState.Minimized; 
             //……
        }然后点击最小化按钮的时候,一切正常,也就是:隐藏了界面、任务栏图标,并在托盘显示。
如果我手动点击“登录”按钮的时候,也可以实现上面要求。
但是当我在加载窗体时调用按钮点击事件的时候,就只能隐藏界面,但是显示任务栏图标。也就是任务栏图标无法隐藏。
我调用方法如下:
public Form1()
        {
            InitializeComponent();
            if(cbAutoLogin.Checked )//如果勾选了自动登录复选框
            {
                 this.btlogin_Click(null,null);//调用按钮点击事件
            }
        }如果我在private void Form1_SizeChanged(object sender, EventArgs e)方法里加上this.ShowInTaskbar = false;
就会抛出异常: 未处理的“System.StackOverflowException”类型的异常出现在 System.Windows.Forms.dll 中。请问还有什么好的办法能在窗体加载时调用点击事件就可以隐藏界面及任务栏图标吗?

解决方案 »

  1.   

    换一下顺序:this.ShowInTaskbar = false; 
    this.Hide();         或者,直接在设计视图中,把ShowInTaskbar 设置为 false; 
      

  2.   

    换顺序也是抛出异常;
    如果在设计图中修改this.ShowInTaskbar = false; 
    那么窗口没有最小化也看不到任务栏图标呢。
    我想在最小化时才隐藏任务栏图标。
      

  3.   

            private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                this.Show();
                this.WindowState = FormWindowState.Maximized;
            }
            protected override void OnSizeChanged(EventArgs e)
            {
                if (this.WindowState == FormWindowState.Minimized)
                {
                    this.Hide();
                    this.notifyIcon1.Icon = this.Icon;
                    this.notifyIcon1.Visible = true;
                    this.notifyIcon1.Text = "测试";                
                }            
                //base.OnSizeChanged(e);
            }