当一个控件Dock = DockStyle.Fill
是具有任何填充集的另一个控件的子控件时,停靠控件完全忽略容器控件的填充。如果容器控件是 UserControl 类型的子类,则不会发生这种情况。
例如,考虑以下两个类。
[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))]
public class Container : Control
{
public Container()
{
Dock = DockStyle.Fill;
Padding = new Padding(30, 30, 30, 30);
BackColor = Color.Blue;
Controls.Add(new Contained());
}
}
public class Contained : Control
{
public Contained()
{
Dock = DockStyle.Fill;
BackColor = Color.White;
}
}
这DesignerAttribute
只是用作设计人员的辅助工具。除非您将Container
控件更改为继承自UserControl
,否则Contained
控件将不符合Container
控件的Padding
属性。
为什么是这样?我是否必须使用 UserControl 才能将另一个控件停靠在具有自定义填充的自定义控件中?
注意:我正在使用 .NET 4.5 运行 VS11。这可能是问题所在,但我无法在其他版本或平台上对其进行测试以确定。
谢谢,布兰登