动态Winforms控制改变大小

时间:2013-07-22 14:37:34

标签: winforms user-controls

我有这段代码

ShadedRoundedRectangle rect = new ShadedRoundedRectangle();
rect.Location = new Point( 0, nextY );
rect.Size = new Size( 200, 20 );
rect.NewText = String.Format( "{0} x {1} ({2} kcals)", ci.Amount, ci.Product.ItemName, ci.Amount * ci.Product.Calories );

panel1.Controls.Add( rect );

ShadedRoundedRectangle是一个用户控件,可以看到大小为200,20的阴影圆角矩形。将rect添加到面板控件集合时,大小会更改为233, 23

用户控件已为0,0,0,0padding属性定义了margin,但我仍然坚持为什么会发生这种情况。

2 个答案:

答案 0 :(得分:0)

我正在回答我自己的问题,因为在将用户控件添加到面板的控件集合后,我发现导致Size属性发生变化的原因。

将用户控件的默认字体MS Sans Serif 8.25pt更改为其他字体,即Arial Regular 8.25pt在这种情况下解决了我的问题,并且在将用户控件添加到面板的控件集合后,大小没有改变

Visual Studio 2012中必定存在导致此行为发生的错误。

答案 1 :(得分:0)

真正的问题是AutoScaleMode属性。默认情况下,它设置为Font,这意味着如果表单的字体大小与控件的字体大小不同,控件将调整大小。

将AutoScaleMode设置为None,将解决此问题。 此外,确保窗体和控件具有相同的字体将解决此问题。