我想創建一個帶有按鈕列的表單。這些按鈕應該適合所有的窗體寬度。我也希望儘可能將其推到形式頂部。它應該看起來像這樣:設置按鈕在WinForms中填充父級的所有寬度和頂部
|----------------------------------|
| Form caption |
|----------------------------------|
||--------------------------------||
||Button0 ||
||--------------------------------||
||--------------------------------||
||Button1 ||
||--------------------------------||
||--------------------------------||
||Button2 ||
||--------------------------------||
| |
| |
| free space |
| |
|----------------------------------|
通常我使用C++/Qt,它有豐富的佈局。據我所知,C#並不是那麼好。我發現TableLayoutPanel
與1列可以做到這一點。我唯一想要的是將所有按鈕推到頂部。 所以我創建了下面的代碼:
// panelButton was created by VS with following params:
this.panelButton = new System.Windows.Forms.TableLayoutPanel();
this.panelButton.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelButton.Name = "panelButton";
this.panelButton.RowCount = 1;
for(int i = 0;i < 3;i ++)
{
Button button = new Button();
button.Dock = DockStyle.Fill;
button.Height = 40;
button.Text = "Button" + i;
button.Click += new EventHandler(delegate(object o, EventArgs args) {});
panelButton.Controls.Add(button, 0, i);
}
,但我得到的佈局是錯誤的 - button0
和button1
是40像素高度預期,但button2
填滿所有的空間時,我希望這將是40像素。
添加:我找到了解決方法。我加
panelButton.Controls.Add(new Control(), 0, rowIndex);
循環後,所以他們按預期工作。
設置'button.Dock'到'System.Windows.Forms.DockStyle.Top' –
順便說一下,佈局與'C#'無關,這是像'Windows窗體'和'WPF'這樣的UI框架的工作,兩者都很好。 –
@RezaAghaei,比也行不通。所有的按鈕都是40px高度,但佈局的高度不會增長。如果所有按鈕的高度>面板高度,則會添加滾動條 – folibis