Dock = DockStyle.Fill
のコントロールが、パディングセットを持つ別のコントロールの子である場合、ドッキングコントロールはコンテナコントロールのパディングを完全に無視します。コンテナコントロールがUserControl型のサブクラスである場合、これは発生しません。Control.Paddingがドッキングされたコントロールのレイアウトに影響しないのはなぜですか?
たとえば、次の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を使用する必要がありますか?
注:VS11を.NET 4.5で実行しています。これは問題の可能性がありますが、別のバージョンやプラットフォームでそれをテストして確かめることはできません。
おかげで、 ブランドン
あなたの実際の質問は「なぜですか?」、またはより良い回避策ですか? http://social.msdn.microsoft.com/Forums/en/winforms/thread/86ac4b22-a43a-4ef6-86ed-482596abf230を参照してください。 –