Dock.Left / Right打破了简单的基于对接的布局

时间:2015-02-17 18:16:19

标签: c# .net winforms layout

这是关于布局的另一个Windows窗体(愚蠢?)问题。

所需的布局非常简单:

    • ListBox(Dock.Fill)
    • 面板(Dock.Bottom)
      • 按钮(Dock.Right)

以下是代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.Controls.Add(new ListBox { Dock = DockStyle.Fill });

        Panel panel = new Panel { AutoSize = true, Dock = DockStyle.Bottom };
        panel.Controls.Add(new Button { Text = "X", Dock = DockStyle.Right });

        this.Controls.Add(panel);
    }
}

以下是预期结果:

+----------+
|          |
| ListBox  |
|          |
|          |
+----------+
+----------+
|  Panel   |
|     +---+|
|     | X ||
|     +---+|
+----------+

问题在于,如果Dock.LeftDock.Right按钮Panel缩小并随Button消失:

enter image description here

但是Dock.TopDock.Bottom ButtonPanel按预期显示:

enter image description here

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为您的AutoSize与您的Docking相冲突。

不用尝试:

Panel panel = new Panel { AutoSize = false, Dock = DockStyle.Bottom };