当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。这可能是问题,但我不能在另一个版本或平台上测试它以确定。
谢谢, 布兰登
答案 0 :(得分:2)
容器控件应该来自ContainerControl类。这给了它一些“像容器一样行为”的行为。包括观察Padding属性。