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如何显示窗体而不是最小化状态

评论(0)Web开发网
阅读(631)喜欢(0)Asp.Net/C#/WCF