假设您有一个 Windows 窗体应用程序,它有一个主窗口和一个子窗口。如果您最大化主窗口和子窗口,然后最小化主窗口,子窗口也会自动最小化。这是正确和预期的。如果您随后恢复主窗口(通过单击任务栏中的图标),主窗口会正确恢复为最大化,但辅助窗口会恢复为非最大化。有没有什么办法解决这一问题?(这似乎是一个 WinForms 错误,但也许是设计使然……)重现(需要两台显示器):创建一个新的默认 Windows 窗体应用程序。这将创建一个名为Form1.选择Project | Add Windows Form...并单击Add以添加一个名为 的新表单Form2。将构造函数更改Form1为如下所示:public Form1(){
InitializeComponent();
new Form2().Show(this); // New line of code.}运行应用程序。将 Form1 移动到一个监视器,将 Form2 移动到另一个监视器。通过单击标题栏上的最大化图标来最大化 Form1 和 Form2。通过单击其标题栏上的最小化图标来最小化 Form1。观察 Form2 也变得最小化。通过单击任务栏上的图标来恢复 Form1。实际结果:Form1 恢复到其最大化状态。Form2 不会恢复到其最大化状态。预期结果:两种形式都恢复到它们的最大化状态。
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
经过进一步搜索,我找不到任何记录在案的解决方案,所以我想出了自己的解决方案。如果您将以下方法和字段添加到子表单的实现中,它可以解决问题:
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;
但是,如果有人有更好的解决方案,我会非常有兴趣听到它。
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报
0/150
提交
取消