1
Это еще один вопрос Windows Forms (глупый?) О макете.Dock.Left/Right breaks simple docking based layout
Желаемое расположение довольно прост:
- Форма
- ListBox (Dock.Fill)
- Panel (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
появляются, как ожидалось:
Что я делаю неправильно?
Спасибо за ваш ответ, но Авторазмер является «необходимым». И я не понимаю, где проблема для WinForms: 'Button' получает height =>' Panel' получает ту же высоту => Готово. – Pragmateek
@Pragmateek Но ваша кнопка * не имеет высоту - она хочет состыковать справа, что требует от нее также получить высоту от родителя. AutoSize на панели не может работать в этом сценарии. – LarsTech
OK Я вижу, что он не работает вообще, как DockPanel в WPF, где DockPanel будет адаптировать его высоту к контенту. :/Думаю, я должен пойти с 'TableLayoutPanel'. Любое другое предложение? Благодарю. – Pragmateek