【发布时间】:2012-01-10 23:02:05
【问题描述】:
我有一个UserControl,其中包含一个TextBox。
当我的父 UserControl 调整大小时,内部 TextBox 会仔细调整位置。
如果UserControl 由于表单的自动缩放而被调整大小,那么我的UserControl 将被缩放(应该如此)。但是后来我的孩子TextBox 从我下面调整了大小。
我怎样才能让我拥有的TextBox 将自己排除在缩放之外?
该机制的工作方式使我无法“事后修补”;这是幸运的,因为我不想诉诸如此丑陋的黑客(即我想要正确的解决方案)。
我试过不打电话给base.ScaleControl:
public partial class MyControl : UserControl
{
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
//base.ScaleControl(factor, specified);
UpdateTextBoxPosition();
}
}
但这没有用。
【问题讨论】:
-
您必须允许它重新缩放,否则它将不适合字体。只需将其放在 OnLoad() 中您想要的位置即可。
-
@HansPassant 我将自己处理字体 - WinForms 无论如何都无法正确处理字体缩放(如果未保留默认字体:它会忽略级联字体更改)。由于容器和
TextBox需要的位置之间的舍入误差,我不能让TextBox自行缩放。
标签: winforms user-interface user-controls scaling