AntdUI.StackPanel 按水平方向或垂直方向顺序排列子控件,适合工具条、表单行、按钮组等简单线性布局。
import win.ui;
import dotNet.AntdUI;
import System.Windows.Forms;
import System.Drawing;
/*DSG{{*/
var winform = win.form(text="AntdUI StackPanel";right=640;bottom=180)
winform.add(host={cls="custom";left=20;top=30;right=620;bottom=110;dl=1;dr=1;dt=1;z=1})
/*}}*/
var panel = AntdUI.StackPanel(winform.host);
panel.Vertical = false;
panel.Gap = 10;
panel.AutoScroll = true;
panel.Padding = System.Windows.Forms.Padding(10);
// StackPanel 横向布局中,ItemSize 表示每一项的宽度。
panel.ItemSize = "88";
var btnSave = AntdUI.Button();
btnSave.Text = "保存";
btnSave.Type = AntdUI.TTypeMini.Primary;
btnSave.Size = System.Drawing.Size(88,32);
var btnCancel = AntdUI.Button();
btnCancel.Text = "取消";
btnCancel.Size = System.Drawing.Size(88,32);
var btnDelete = AntdUI.Button();
btnDelete.Text = "删除";
btnDelete.Type = AntdUI.TTypeMini.Error;
btnDelete.Size = System.Drawing.Size(88,32);
// AntdUI 2.4.1 的 StackPanel 会将后添加的控件排在前面。
// 下面按反序添加,使视觉顺序为:保存、取消、删除。
panel.Controls.Add(btnDelete);
panel.Controls.Add(btnCancel);
panel.Controls.Add(btnSave);
winform.show();
panel.PerformLayout();
win.loopMessage();
| 成员 | 说明 |
|---|---|
Vertical |
是否垂直排列;false 为水平排列。 |
Gap |
子控件之间的间距。 |
ItemSize |
子控件主轴尺寸规则字符串。横向布局表示宽度,纵向布局表示高度;不指定时使用子控件当前 Width/Height。 |
AutoScroll |
内容超出时是否显示滚动条。 |
RightToLeft |
反向布局。 |
PauseLayout |
批量调整时暂停布局。 |
Add(control) |
添加子控件。 |
AddToFront(control) / AddToBack(control) |
添加到前/后。 |
Remove(control) / RemoveAt(index) / Clear() |
删除子控件。 |
StackPanel(winform.host),再创建无宿主子控件并 panel.Add(child)。StackPanel 按子控件当前尺寸计算主轴尺寸;无宿主创建的普通控件初始 Width/Height 可能为 0。横向布局请设置 ItemSize 或子控件 Width,纵向布局请设置 ItemSize 或子控件 Height。winform.show() 后调用一次 panel.PerformLayout()。StackPanel 的视觉排列顺序与添加顺序相反;如果顺序重要,可按反序添加。GridPanel;需要自动换行时优先考虑 FlowPanel。