【问题标题】:Windows forms controls' sizes changes when display settings change显示设置更改时 Windows 窗体控件的大小会更改
【发布时间】:2012-10-16 15:47:40
【问题描述】:

我正在处理一个 Windows 窗体项目。在这个项目中,控件的大小在设计器中设置,并且自动调整大小被关闭。然而,当 Windows 7 中的显示设置设置为 medium (125%)large (150%) 时,控件的大小会发生变化。如何防止这种行为?

【问题讨论】:

    标签: c# .net winforms custom-controls


    【解决方案1】:

    您很可能可以通过将表单的 AutoScaleMode property 设置为 AutoScaleMode.None 来关闭此行为。

    话虽如此,不要只是关闭自动缩放,因为这很可能是一件好事!它使您的表单可以在各种分辨率和字体比例设置下工作。例如,如果您在设计表单时忘记了视力受损的用户(例如,将系统字体缩放比例提高到异常高的用户),那么由于自动缩放,您的表单可能仍然有效。

    正如其他答案所暗示的,而不是根据固定像素值指定每个控件的位置和大小,然后关闭自动缩放,而是使用自动布局技术:

    • 将控件放入各种容器元素中以排列控件(在网格中 - TableLayoutPanel,一个接一个 - FlowLayoutPanel 等);
    • 设置每个控件的DockAnchor属性;
    • 设置每个控件的AutoSizeAutoSizeMode 属性。

    正确执行此操作需要一些练习,但会使表单的布局更加健壮。

    【讨论】:

    • 我同意,但这是一个带有游戏板的游戏。没有什么花哨的,当然也不是我得到报酬的东西。所以在这个爱好项目中关闭 AutoScaleMode 绝对是要走的路:)
    • 好的,那么对于冗长的演讲感到抱歉。 (虽然我仍然认为自动布局不是那么花哨... :)
    【解决方案2】:

    使用控件的 Anchor 和 Dock 属性。

    【讨论】:

      【解决方案3】:

      在您的用户控件或表单上将AutoScaleMode 设置为Dpi

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-20
        • 2015-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多