我的UserControl
包含TextBox
。
调整父级UserControl
后,内部TextBox
会小心重新定位。
如果UserControl
由于表单的AutoScaling而调整大小,那么我的UserControl
会缩放(应该是)。但是我的孩子TextBox
从我的身下调整了大小。
如何让我所拥有的TextBox
将自己排除在缩放之外?
这种机制的工作原理是我不能“事后修补”;这是幸运的,因为我不想诉诸这种丑陋的黑客(即我想要正确的解决方案)。
我尝试不调用base.ScaleControl
:
public partial class MyControl : UserControl
{
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
//base.ScaleControl(factor, specified);
UpdateTextBoxPosition();
}
}
但这没效果。
答案 0 :(得分:1)
我认为你是在正确的轨道上,但是错误的控制。
尝试继承您自己的TextBox以忽略这些更改:
public class UnscaledTextBox : TextBox {
protected override void OnParentFontChanged(EventArgs e) {
//base.OnParentFontChanged(e);
}
protected override void ScaleControl(SizeF factor, BoundsSpecified specified) {
//base.ScaleControl(factor, specified);
}
}
使用UserControl中的UnscaledTextBox
控件,看看是否有效。