Dock.Left/Right 打破了简单的基于停靠的布局
Dock.Left/Right breaks simple docking based layout
这是另一个关于布局的 Windows 表单(愚蠢?)问题。
所需的布局非常简单:
- 表单
- 列表框 (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.Left
或 Dock.Right
按钮 Panel
随 Button
:
缩小并消失
但是对于 Dock.Top
或 Dock.Bottom
,Button
和 Panel
会按预期出现:
我做错了什么?
我认为您的 AutoSize 与 Docking 冲突。
尝试不使用:
Panel panel = new Panel { AutoSize = false, Dock = DockStyle.Bottom };
这是另一个关于布局的 Windows 表单(愚蠢?)问题。
所需的布局非常简单:
- 表单
- 列表框 (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.Left
或 Dock.Right
按钮 Panel
随 Button
:
但是对于 Dock.Top
或 Dock.Bottom
,Button
和 Panel
会按预期出现:
我做错了什么?
我认为您的 AutoSize 与 Docking 冲突。
尝试不使用:
Panel panel = new Panel { AutoSize = false, Dock = DockStyle.Bottom };