withDock = DockStyle.Fill
コントロールが、パディングが設定された別のコントロールの子である場合、ドッキングされたコントロールは、コンテナーコントロールのパディングを完全に無視します。コンテナコントロールがUserControlタイプのサブクラスである場合、これは発生しません。
たとえば、次の2つのクラスについて考えてみます。
[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を使用する必要がありますか?
注:私は.NET4.5でVS11を実行しています。これは問題になる可能性がありますが、別のバージョンまたはプラットフォームでテストして確実に調べることはできません。
ありがとう、ブランドン