dotNet.AntdUI 用于在 aardio 窗口程序中调用开源 .NET WinForms 组件库 AntdUI。导入库后,
dotNet.AntdUI 扩展库以后,请直接使用 AntdUI 命名空间而不是 dotNet.AntdUI(等价于 AntdUI)。AntdUI 提供了丰富的桌面 UI 控件。可以方便地实现一些 aardio 原生控件未提供的控件与效果。需要注意每个技术方案都有适合的场景。 适合网页前端技术的界面应当使用 web.view 。使用 aardio 原生控件就可以快速实现的界面,则不必把简单的事复杂化。在 aardio 窗口里可以方便地混合各种技术方案。 例如在同一个界面上可以同时包含 aardio 原生控件/plus 控件/web.view/AntdUI 控件。
AntdUI 是一个 WinForms/.NET 组件库,不要与网页前端界面库 antd 混淆。
在 aardio 中使用 AntdUI 有两种可选的方式:
创建一个 AntdUI.BaseForm 管理所有 AntdUI 控件,然后按 AntdUI 的方式往 BaseForm 上添加控件。
这种方法需要自己逐个设置代码的位置、大小等参数。
要特别注意必须在初始化好所有 AntdUI 控件以后再调用 winform.show() 显示窗体,以避免 AntdUI.BaseForm 提前初始化(指创建真实的物理窗口句柄)。 这是因为 AntdUI.BaseForm 在初始化物理窗口时执行 DPI 自动缩放,如果错过了这个唯一的时机就需要显式调用 AutoDpi 方法缩放控件(这难以控制且容易出错,多次调用会重复放大)。
每个 AntdUI 都绑定一个 aardio 宿主控件。
例如 var btn = AntdUI.Button(winform.custom)。这种方法代码较为简单,DPI 缩放/窗口自动缩放/九宫格自动布局等琐碎的工w作都交由 aardio 自动处理。本文档将主要采用这种方法。
import win.ui 创建 aardio 窗口。custom 控件作为 .NET 控件宿主。import dotNet.AntdUI 导入扩展库。AntdUI.控件名(winform.custom) 创建控件。import win.ui;
/*DSG{{*/
var winform = win.form(text="dotNet.AntdUI 快速上手";right=480;bottom=260)
winform.add(
btnHost={cls="custom.button";text="点我";left=40;top=40;right=180;bottom=78;z=1};
inputHost={cls="custom.edit";left=40;top=100;right=360;bottom=138;z=2}
)
/*}}*/
import dotNet.AntdUI;
var btn = AntdUI.Button(winform.btnHost);
btn.Type = AntdUI.TTypeMini.Primary;
var input = AntdUI.Input(winform.inputHost);
input.PlaceholderText = "这里显示按钮点击结果";
input.AllowClear = true;
btn.Click = function(sender,e){
input.Text = "Hello AntdUI";
//以属性指定 .NET 事件或委托时,owner 参数指向 .NET 对象自身
//onwer.Text = "Hello AntdUI";
}
winform.show();
win.loopMessage();
必须使用 custom 控件创建 .NET 控件的宿主窗口。aardio 会设置 .NET 控件自动填满 aardio 窗口,并移除三维边框/双边框样式,同时会将 aardio 控件的禁用、显示、文本属性转移给 .NET 控件,忽略其他属性。
AntdUI 控件无法像 aardio 原生控件那样在窗体设计器中实现所见即所得的效果,但是可以使用 custom 控件做一些简单的模拟,以实现至少不需要手写控件的位置、布局、自动缩放等代码。
custom 是完全等价的,主要区别是在 IDE 的窗体设计器中会模拟点号后面的控件外观,例如指定 cls="custom.radio" 在窗体设计器中会显示为 radio 控件外观。frame=1)后在设计器中显示为凸起边框,外观类似 button;启用三维边框时(控件构造参数中指定edge=1)后 custom 控件在设计器中显示为凹陷边框,外观类似 edit 。嵌入 .NET 控件时会自动移除 aardio 宿主窗口的三维边框/双边框样式。aardio 窗口支持自适应窗口缩放与 DPI 缩放,或显式指定控件的固定边距与自动缩放等属性。
一个常见的技巧是在 aardio 窗体设计器上点击右键菜单中的九宫格缩放布局,自动设置所有控件构造参数表中 dl,dt,dr,db 字段的值。「九宫格缩放布局」是指将界面划分为「4 角 + 4 边 + 中间」共计九个方形格子,控件哪侧的边位于哪则的方格内则该边固定边距,例如控件的左侧边位于左侧的格子内则左边距固定,其余类推,使靠边的内容固定,中间的内容自由拉伸,缩放自然。
例如控件构造参数dl=1;dt=1;dr=1;db=1表示四方固定边距,等价的写法是 anchors={left=true;top=true;right=true;bottom=true}。
例如在创建控件时指定或者 可固定控件的四方边距随父窗口自动缩放。
custom 控件内。.Add(...)、.AddRange(...)。