c#隐藏程序界面及任务栏图标并在系统托盘显示的问题

jay314159 2010-03-02 10:13:19
我做了一个小程序,如果登陆成功的话就最小化窗口,
添加了最小化事件如下:
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 中。

请问还有什么好的办法能在窗体加载时调用点击事件就可以隐藏界面及任务栏图标吗?
...全文
422 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
feelxym 2010-03-03
  • 打赏
  • 举报
回复
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);
}
jay314159 2010-03-02
  • 打赏
  • 举报
回复
换顺序也是抛出异常;
如果在设计图中修改this.ShowInTaskbar = false;
那么窗口没有最小化也看不到任务栏图标呢。
我想在最小化时才隐藏任务栏图标。
xray2005 2010-03-02
  • 打赏
  • 举报
回复
换一下顺序:

this.ShowInTaskbar = false;
this.Hide();

或者,直接在设计视图中,把ShowInTaskbar 设置为 false;

110,566

社区成员

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

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

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