# Menu 导航菜单

Menu 用于左侧导航、顶部导航或分组功能列表。最常见的数据结构是 `MenuItem` + `Sub` 子集合。

```aardio
import win.ui;
var winform = win.form(text="AntdUI Menu";right=760;bottom=460)
winform.add(host={cls="custom";left=20;top=20;right=220;bottom=420;z=1})

import dotNet.AntdUI;

var menu = AntdUI.Menu(winform.host);
menu.Mode = AntdUI.TMenuMode.Inline;
menu.Unique = true;

var home = AntdUI.MenuItem("首页");
home.ID = "home";

var sys = AntdUI.MenuItem("系统管理");
sys.ID = "system";
sys.Sub.Add( AntdUI.MenuItem("用户管理") );
sys.Sub.Add( AntdUI.MenuItem("角色管理") );

menu.Items.Add(home);
menu.Items.Add(sys);

menu.SelectChanged = function(sender,e){
    // e 通常携带 item；也可直接读取 menu.SelectItem
    var item = menu.SelectItem;
    if(item) winform.text = "当前菜单：" + item.Text;
}

winform.show();
win.loopMessage();
```

## 常用属性

- `Items`：菜单项集合，添加 `AntdUI.MenuItem`。
- `Mode`：菜单模式，常见 `AntdUI.TMenuMode.Inline`、水平/垂直等模式以当前 DLL 枚举为准。
- `Trigger`：子菜单触发方式，`AntdUI.Trigger.Hover` 或 `Click`。
- `Collapsed` / `AutoCollapse`：折叠菜单。
- `Unique`：只保持一个子菜单展开。
- `Indent` / `InlineIndent`：树形缩进与缩进宽度。
- `Radius` / `Round`：圆角。
- `BackHover` / `BackActive` / `ForeActive`：交互颜色。

## MenuItem 常用属性

- `Text`：显示文本。
- `ID` / `Name`：查找和业务标识；可配合 `FindID()` / `FindName()`。
- `IconSvg` / `IconActiveSvg`：SVG 图标。
- `Sub`：子菜单集合。
- `Enabled` / `Visible`：是否启用、可见。
- `Expand`：展开状态。
- `Select`：是否选中。
- `Tag`：绑定业务对象。

## 常用方法与事件

- `Select(item)`：选中指定项。
- `SelectIndex(...)`：按层级索引选中。
- `FindID(id)` / `FindName(name)`：查找项。
- `USelect()`：取消选择。
- `SelectChanged`：选中项变化。
- `ItemClick`：点击菜单项。
- `SelectChanging`：选中前事件，返回 `false` 可阻止。

## 注意

- .NET 控件内部索引通常从 0 开始；aardio 数组从 1 开始，迁移 C# 示例时要特别留意。
- `MenuItem.Sub` 是 .NET 集合，追加项用 `.Add(...)`，不要用 aardio 的 `table.push`。
