代码之家  ›  专栏  ›  技术社区  ›  Matthew Watson

恢复主窗口时,先前最大化的子窗口不再最大化。

  •  0
  • Matthew Watson  · 技术社区  · 6 年前

    假设您有一个window s窗体应用程序,它有一个主窗口和一个子窗口。

    如果您恢复主窗口(通过单击任务栏中的图标),主窗口被正确地恢复为最大化,但是次要窗口恢复为非最大化。

    要复制(需要两个监视器):

    1. Form1 .
    2. Project | Add Windows Form... 然后点击 Add 添加名为 Form2 .
    3. 表格1 构造器如下所示:

      public Form1()
      {
          InitializeComponent();
          new Form2().Show(this); // New line of code.
      }
      
    4. 运行应用程序。

    5. 通过点击标题栏上的最大化图标,最大化Frim1和Frim2。

    6. 通过单击标题栏上的最小化图标最小化窗体1。注意,表格2也会最小化。

    7. 通过单击任务栏上的图标还原窗体1。

    FUM1恢复到其最大化状态。 FUM2没有恢复到其最大化状态。

    两种形式都恢复到其最大化状态。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Matthew Watson    6 年前

    经过进一步的搜索,我找不到任何有文件证明的解决方案,所以我已经提出了自己的。如果将以下方法和字段添加到子窗体的实现中,则可以解决此问题:

    protected override void OnVisibleChanged(EventArgs e)
    {
        base.OnVisibleChanged(e);
    
        if (!Visible)
        {
            _lastState = WindowState;
        }
        else
        {
            if (_lastState == FormWindowState.Maximized)
                WindowState = FormWindowState.Maximized;
        }
    }
    
    FormWindowState _lastState = FormWindowState.Normal;
    

    不过,如果有人有更好的解决方案,我会很有兴趣听到它。

    推荐文章