Dock.Left/Right 打破了简单的基于停靠的布局

Dock.Left/Right breaks simple docking based layout

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

所需的布局非常简单:

代码如下:

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 按钮 PanelButton:

缩小并消失

但是对于 Dock.TopDock.BottomButtonPanel 会按预期出现:

我做错了什么?

我认为您的 AutoSize 与 Docking 冲突。

尝试不使用:

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