1
当带有Dock = DockStyle.Fill
的控件是带有任何填充集的另一个控件的子控件时,停靠控件完全忽略容器控件的填充。如果容器控件是UserControl类型的子类,则不会发生这种情况。为什么Control.Padding不会影响停靠控件的布局?
例如,考虑以下两个类。
[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
控件将不符合控件的属性。
这是为什么?我是否必须使用UserControl才能使用自定义填充来停靠自定义控件中的另一个控件?
注意:我使用.NET 4.5运行VS11。这可能是问题所在,但我无法在另一个版本或平台上进行测试以确定是否有问题。
谢谢, 布兰登
您真正的问题是“为什么?”或更好的解决方法?请参阅http://social.msdn.microsoft.com/Forums/en/winforms/thread/86ac4b22-a43a-4ef6-86ed-482596abf230 –