【问题标题】:Audo adjust form size fort different font size自动调整表格大小以适应不同的字体大小
【发布时间】:2013-10-07 23:34:05
【问题描述】:

见上图。在右侧,我的应用程序在具有正常字体大小(100%)的 Windows PC 上运行,左侧是相同的应用程序,字体大小设置为 125%(这是在屏幕首选项中设置的)。如您所见,缺少左上角的 2 个按钮。

表单属性 .AutoScaleMode = Font,理论上应该可以解决此问题,但事实并非如此。 所有左列按钮都有 Anchor = Left |底部。如果我将其设置为左 |顶部,然后底部 2 个按钮将不可见。

如何以更少的工作量解决这个问题?我有大约 100 个具有这种行为的表单。

谢谢

【问题讨论】:

  • 你做了一些事情来阻止窗户变得足够高。当然不可能从截图中分辨出来。
  • 是的,在 form.OnLoad 我有 Height = 312,它在正常字体大小下按预期工作。我应该如何根据字体大小调整这个尺寸?我可以从系统信息中获得乘数吗?
  • 再一次没有任何提示你为什么写这个。删掉就好了。
  • 我无法删除它。在该按钮下,我有一个 TextBox 必须在应用程序启动时隐藏。这就是为什么我要强制表格高度。在文本框变得可见的一些操作之后,当我只是将表单高度更改为需要的高度时。

标签: c# winforms .net-4.0


【解决方案1】:

我无法删除它。在该按钮下,我有一个 TextBox,应用程序启动时必须将其隐藏。

只是不要对表单的 Height 属性进行硬编码,将其设置为 TextBox 的 Top 属性。或者少一点。另请注意,Height 不是正确使用的属性,它受用户为窗口标题字体选择的大小的影响。因此,无论视频适配器的 DPI 设置如何,您的表单都可能出现异常行为。您想改为设置 ClientSize 属性,如下所示:

    protected override void OnLoad(EventArgs e) {
        this.ClientSize = new Size(this.ClientSize.Width, SomeTextBox.Top);
        base.OnLoad(e);
    }

进一步的细节表明,这必须在表单的 Load 事件中完成,如图所示。当它触发时,表格已重新调整大小,因此您将知道制作它的高度。构造函数太早了。

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 2012-08-10
    • 2013-06-04
    • 2016-04-21
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多