window form最小化隐藏到图标栏双击notifyicon如何显示窗体而不是最小化状态
C# winform放置了notifyicon,双击notifyicon实现窗体的显示和隐藏。同时添加了Form窗体的SizeChanged事件判断最小化时自动隐藏到图标栏。源代码如下
/// <summary> /// 最小化时自动隐藏到图标栏 /// </summary> private void MainFrm_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) this.Visible = false; } /// <summary> /// 任务栏图标双击事件 /// </summary> private void notifyIcon1_DoubleClick(object sender, EventArgs e) { this.Visible = sender == null ? true : !this.Visible; if (this.Visible) { this.TopMost = true; this.Focus(); } }
此时会出现问题:如果窗体显示,通过点击notifyicon隐藏后显示窗体,窗体是可见的,出现在其他窗体之前。但是如果是通过窗体的最小化按钮设置窗体的隐藏,当双击notifyicon时,此时窗体不会出现在其他窗体之前,而是最小化隐藏在任务栏,需要点击一次任务栏的图标才会显示窗体。
解决办法:同时设置form的windostate为normal,这样最小化后在双击notifyicon显示窗体时,窗体才会出现,而不是最小化状态。
/// <summary> /// 任务栏图标双击事件 /// </summary> private void notifyIcon1_DoubleClick(object sender, EventArgs e) { this.Visible = sender == null ? true : !this.Visible; if (this.Visible) { this.TopMost = true; //如果你的窗体是可以修改大小的,在SizeChanged事件中记录是最大化或者当前窗体的大小 //然后修改这句代码为FormWindowState.Maximized或者设置this.Width/this.Height属性还原窗体 this.WindowState = FormWindowState.Normal; this.Focus(); } }
加支付宝好友偷能量挖...
原创文章,转载请注明出处:window form最小化隐藏到图标栏双击notifyicon如何显示窗体而不是最小化状态