在窗体最大化时自动缩放子控件

有没有办法在最大化屏幕或更改分辨率时使所有内容在WindowsFrom上自动缩放。

我发现这是手动缩放它是正确的但是当切换分辨率时我必须每次都改变它。

this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 

你可以按下没有简单的开关来自动发生这种情况。 自动缩放是为了解决一个非常不同的问题。 您需要考虑到此设计目标来布置表单及其控件。

特别是,最好的方法是使用一个TableLayoutPanel控件停靠以“填充”整个表单 – 将其Dock属性设置为DockStyle.Fill 。 这将基本上成为“布局网格”,用于布局您希望在窗体上显示的子控件。

然后,将每个常规控件放在该TableLayoutPanel控件的“单元格”内。 设置子控件的Anchor属性 ,以指示在窗体展开(或缩小)时希望它们如何增长。 例如:

  • 如果希望控件在窗体最大化时水平增长,则需要将其锚定到其容器单元格的左右边缘。
  • 要垂直生长,您需要将其锚定到单元格的顶部和右侧边缘。
  • 如果将它锚定到所有边缘,它将通过向所有方向增长而变大。
  • 如果将其锚定到任何边缘,则控件将保持相同的大小并且仅将其自身置于单元格内部。

这需要一些前瞻性才能做到正确。 例如,您偶尔必须在TableLayoutPanel控件内部设置控件的ColumnSpan和/或RowSpan属性,以确保它们按照您希望的方式排列,特别是相对于窗体上显示的其他控件。

但这只是做你想做的事情的唯一方法,一旦你设置它就会很好地工作。