【问题标题】:Form has minimum size after restoring from minimize state从最小化状态恢复后,表单具有最小尺寸
【发布时间】:2011-07-02 14:42:57
【问题描述】:

我在“属性”窗口的应用程序设置和数据绑定中添加了 ClientSize,以便在表单关闭后保存表单的大小。这奏效了。但是当我最小化表单然后重新激活它时,它具有最小尺寸。是错误还是我做错了什么

  1. 创建新项目(WindowForm 应用程序)
  2. 打开 Form1 的属性窗口
  3. 在应用程序设置中选择 PropertyBinding
  4. 为 Location 和 ClientSize 添加绑定
  5. 运行
  6. 最大化然后恢复

【问题讨论】:

  • 是的。你是对的,那很丑。

标签: c# .net winforms binding size


【解决方案1】:

我在topic 中找到了答案。所以要在没有副作用的情况下保存大小和位置,需要手动删除绑定并保存应用程序设置

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   Properties.Settings.Default.Size = this.Size;
   Properties.Settings.Default.Location = this.Location;
   Properties.Settings.Default.Save();
}

private void Form1_Load(object sender, EventArgs e)
{
   this.Size = Properties.Settings.Default.Size;
   this.Location = Properties.Settings.Default.Location;
}

【讨论】:

  • 这仍然不能解决问题。当 WindowState 不是 Normal 时,您确实想保存 Size/Location。
  • @Hans Passant - 在我的情况下,表格只能最小化,因此无需检查表格是否已最大化并恢复其大小
  • 好吧,编写这个普遍正确的代码和让它只在你的特定情况下工作一样便宜。
  • @Hans Passant 在我提供的链接中,有一个适用于最大化形式的解决方案。在这里,我发布了适合我情况的代码
【解决方案2】:

在表单、控件和子控件之间对接、填充和自动调整大小的错误组合可能会产生这种效果。

【讨论】:

  • 在没有控件和停靠样式的新表单上进行了尝试。行为相同
  • @Stecya - 如果你有办法重现这个问题,你能编辑你的问题并记录重现它的步骤吗?它会让其他人更容易诊断(从“新建项目...”步骤开始,并记录每个步骤)
猜你喜欢
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
相关资源
最近更新 更多