AntdUI.ContextMenuStrip 是静态右键菜单工具,可为 AntdUI/WinForms 控件打开现代样式菜单。菜单项使用 ContextMenuStripItem,分割线使用 ContextMenuStripItemDivider。
import win.ui;
import dotNet;
import dotNet.AntdUI;
/*DSG{{*/
var winform = win.form(text="AntdUI ContextMenuStrip";right=520;bottom=260)
winform.add(host={cls="custom";left=20;top=20;right=500;bottom=200;z=1})
/*}}*/
var button = AntdUI.Button(winform.host);
button.Text = "右键或单击显示菜单";
var itemType = AntdUI.ContextMenuStripItem("刷新").GetType();
var baseType = itemType.BaseType; // AntdUI.IContextMenuStripItem 抽象基类
var items = dotNet.createArray(baseType,3);
items.SetValue(AntdUI.ContextMenuStripItem("刷新","Ctrl+R"),0);
items.SetValue(AntdUI.ContextMenuStripItemDivider(),1);
items.SetValue(AntdUI.ContextMenuStripItem("退出"),2);
button.Click = function(sender,e){
AntdUI.ContextMenuStrip.open(button,function(item){
winform.msgbox("点击菜单:" + item.Text);
},items);
}
winform.show();
win.loopMessage();
var cfg = AntdUI.ContextMenuStrip.Config(button,function(item){
// item.Text / item.ID / item.Tag
},items,0);
cfg.SetRadius(8).SetAlign(AntdUI.TAlign.BR).SetTopMost(true);
AntdUI.ContextMenuStrip.open(cfg);
Target/Control:所属目标控件,aardio 中优先传 AntdUI/WinForms 控件。Items:IContextMenuStripItem[] 菜单项数组。Call:点击菜单项回调。Align:弹出方向,AntdUI.TAlign。Radius、Gap、IconRatio、IconGap:外观参数。Location:自定义弹出坐标。OnClose:关闭回调。ID:业务标识。Text:主文本。SubText:快捷键或辅助文本。Icon / IconSvg:图标。Enabled、Checked:禁用与选中。Sub:子菜单,类型同样是 IContextMenuStripItem[]。Tag:用户数据。AntdUI.ContextMenuStripItem("刷新").GetType().BaseType 取得 AntdUI.IContextMenuStripItem 抽象基类后创建。Sub 也需要创建 IContextMenuStripItem[]。