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

时间:2012-05-05 12:33:08

标签: c# .net winforms

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

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

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

1 个答案:

答案 0 :(得分:3)

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

特别是,最好的方法是使用TableLayoutPanel control停靠来“填充”整个表单集Dock propertyDockStyle.Fill。这将基本上成为您用于布局您希望在表单上显示的子控件的“布局网格”。

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

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

这需要一些来实现正确。例如,您偶尔必须set the ColumnSpan and/or RowSpan properties of controls inside of the TableLayoutPanel control以确保他们按照您希望的方式排列,特别是相对于表单上显示的其他控件。

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