在.Net,WinForms中在运行时添加用户控件缩放的问题

时间:2010-04-02 14:40:26

标签: c# .net vb.net user-controls scaling

这是一个微小的VB.Net 2008样本的链接:

http://www.4shared.com/file/255391716/26c45c1e/UserControlTest.html

并且,一个C#样本:

http://www.4shared.com/file/255392906/27f4efbb/UserControlTestCHash.html

道歉,但它是一个免费的主机,所以你必须等待10秒。

首先是复制的步骤,然后我将解释问题所在:

(1)创建一个System.Windows.Forms.UserControl并在右下角添加一个按钮。将按钮锚保留为默认值(左上角)。添加一些点缀的按钮,以便您可以看到它们正确缩放。

(2)将UserControl添加到construtor中的表单, InitializeComponent调用之后。

(3)运行表单。

(4)以某种方式增加表单字体大小(例如,单击表单按钮)。

usercontrol中的所有控件都完美缩放,但usercontrol本身没有。它的宽度和高度都增加了太多。查看右下角按钮和用户控件之间的边距。

要解决此问题,必须在之前添加用户控件初始化组件调用。

如果我无法在InitializeComponent之前添加usercontrol,有没有办法让我更正缩放?

2 个答案:

答案 0 :(得分:12)

修改:我删除了之前的回答(基本上说“在我的机器上工作正常”)并将其替换为以下内容。

在自定义UserControl上,设置 AutoScaleMode = Inherit 。这应该纠正用户控件的过度缩放。

答案 1 :(得分:2)

没有复制品,它完美地扩展。如果您设置了UserControl的Font属性并且它与表单的字体大小不匹配,则无法正确缩放。

Font属性是一个“环境”属性,如ForeColor和BackColor。只要将其保留为默认设置(在“属性”窗口中不是粗体),它就会使用父项的字体。当每个控件使用相同的字体大小时,它们都会按比例缩放。

要修复,请在“属性”窗口中选择“字体”属性的文本,按“退格键”将其删除,然后按Enter键。它重置为默认值。


修复你的代码:

        this.SuspendLayout();
        UserControl1 uc = new UserControl1();
        this.Controls.Add(uc);
        this.ResumeLayout(false);