【问题标题】:Automatically scaling child controls when a form is maximized窗体最大化时自动缩放子控件
【发布时间】:2012-05-05 12:33:07
【问题描述】:

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

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

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

【问题讨论】:

  • 这样做并没有什么意义,但你可以半途而废。重新分配表单的 Font 属性以触发自动缩放引擎。您需要将模式设置为字体。获得完全适合是不可能的。

标签: c# .net winforms


【解决方案1】:

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

特别是,最好的方法是使用停靠的TableLayoutPanel control 来“填写”整个表单——将其Dock property 设置为DockStyle.Fill。这实际上将成为您用来布置您希望出现在表单上的子控件的“布局网格”。

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

  • 如果您希望控件在窗体最大化时水平增长,您需要将其锚定到其容器单元格的左右边缘。
  • 要垂直增长,您需要将其锚定到单元格的顶部和右侧边缘。
  • 如果将其锚定到所有边缘,它会随着向各个方向增长而变大。
  • 如果您将其锚定到 none 的边缘,则控件将保持相同的大小并简单地在单元格内居中。

这需要 一点 来搞定。例如,您有时需要set the ColumnSpan and/or RowSpan properties of controls inside of the TableLayoutPanel control 以确保它们按照您希望的方式排列,尤其是相对于表单上显示的其他控件。

但这只是做你想做的事的唯一方法,而且一旦你设置好它确实工作得很好。

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 2012-02-04
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多