自动调整不同字体大小的表单大小

时间:2013-10-07 23:34:05

标签: c# winforms .net-4.0

Wrong re-sized form

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

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

如何以较少的工作量解决此问题?我有大约100种具有这种行为的形式。

THX

1 个答案:

答案 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事件中完成,如图所示。当它发射时,表格已经重新缩放,因此您可以知道它有多高。构造函数太早了。