Popover 是依附在某个 WinForms 控件上的气泡卡片,适合显示轻量详情、操作说明、带链接的短消息或小型自定义内容。
在 aardio 中,Popover 的目标控件应当是 AntdUI / WinForms 控件,例如 AntdUI.Button(winform.host)。如果只需要全局提示,优先考虑 Message 或 Notification。
import win.ui;
import dotNet;
import dotNet.AntdUI;
var winform = win.form(text="AntdUI Popover";right=520;bottom=320)
winform.add(host={cls="custom";left=20;top=20;right=200;bottom=64;z=1})
var btn = AntdUI.Button(winform.host);
btn.Text = "打开 Popover";
btn.Type = AntdUI.TTypeMini.Primary;
btn.Click = function(sender,e){
var cfg = AntdUI.Popover.Config(btn,"订单提醒","您有 3 条待处理订单。");
cfg.ArrowAlign = AntdUI.TAlign.Bottom;
cfg.AutoClose = 0;
cfg.Padding = System.Drawing.Size(16,12);
AntdUI.Popover.open(cfg);
}
winform.show();
win.loopMessage();
常用重载:
AntdUI.Popover.open(btn,"标题","正文内容",AntdUI.TAlign.Bottom);
AntdUI.Popover.open(btn,"正文内容",AntdUI.TAlign.Bottom);
如果内容需要更复杂,推荐使用 Popover.Config,字段更清晰。
常用构造:
var cfg1 = AntdUI.Popover.Config(btn,"标题","内容");
var cfg2 = AntdUI.Popover.Config(btn,"内容");
常用属性:
| 属性 | 说明 |
|---|---|
Control |
依附的目标控件,通常是 AntdUI / WinForms 控件 |
Title |
标题,可为空 |
Content |
内容,可为字符串、控件、Popover.TextRow[] 等 |
ArrowAlign |
箭头方向,AntdUI.TAlign |
ArrowSize |
箭头大小 |
AutoClose |
自动关闭秒数,0 表示不自动关闭 |
Padding |
内容边距,System.Drawing.Size |
Gap |
间距 |
Radius |
圆角 |
Back / Fore |
背景色与文字色 |
Focus |
是否获取焦点 |
OnControlLoad |
内容控件显示后的回调 |
OnClosing |
关闭前回调 |
Tag |
自定义数据 |
链式方法示例:
var cfg = AntdUI.Popover.Config(btn,"提示","可用配置对象设置样式");
cfg.SetArrow(AntdUI.TAlign.Bottom).SetAutoClose(3).SetPadding(16,12);
AntdUI.Popover.open(cfg);
TextRow 可把多段文本作为一行内容显示,并允许给某些片段设置颜色或点击回调。
import dotNet;
import System.Drawing;
var rows = dotNet.createArray(AntdUI.Popover.TextRow,4);
rows.SetValue(AntdUI.Popover.TextRow("您有"),0);
rows.SetValue(AntdUI.Popover.TextRow("3",2,0xFFFF0000),1);
rows.SetValue(AntdUI.Popover.TextRow("条待处理订单,"),2);
var link = AntdUI.Popover.TextRow("查看",2,0xFF0000FF);
link.SetCall(function(){
return true;
});
rows.SetValue(link,3);
AntdUI.Popover.open(btn,rows,AntdUI.TAlign.BL);
常用属性:Text、Gap、Fore、Font、Call、Tag。
Content 可以传入 WinForms/AntdUI 控件,用于做小型表单或菜单。复杂面板建议使用 Drawer 或 Modal,避免 Popover 内容过重。
import System.Windows.Forms;
import System.Drawing;
var panel = System.Windows.Forms.Panel();
panel.Size = System.Drawing.Size(260,120);
var label = System.Windows.Forms.Label();
label.Text = "这里可以放自定义 WinForms 内容";
label.AutoSize = true;
panel.Controls.Add(label);
var cfg = AntdUI.Popover.Config(btn,"自定义内容",panel);
cfg.SetArrow(AntdUI.TAlign.Bottom).SetPadding(12);
AntdUI.Popover.open(cfg);
Control 必须是 WinForms/AntdUI 控件;普通 aardio 按钮不是 WinForms 控件。Popover 依赖目标控件位置,目标控件销毁、隐藏或窗口关闭时应避免继续弹出。Drawer/Modal,Popover 更适合轻量内容。