# MsgList 好友消息列表

`AntdUI.Chat.MsgList` 是聊天界面左侧常见的会话/联系人列表控件。每一行使用 `AntdUI.Chat.MsgItem` 描述，可显示头像、名称、最近消息、时间、未读数或角标。

> 当前 DLL 已确认存在：`AntdUI.Chat.MsgList`、`AntdUI.Chat.MsgItem`、`AntdUI.Chat.MsgItemCollection`。

## 最小示例

```aardio
import win.ui;
import dotNet.AntdUI;
import System.Drawing;
/*DSG{{*/
var winform = win.form(text="MsgList 示例";right=360;bottom=420)
winform.add(
host={cls="custom";left=0;top=0;right=360;bottom=420;z=1}
)
/*}}*/

var msgList = AntdUI.Chat.MsgList(winform.host);
msgList.Dock = System.Windows.Forms.DockStyle.Fill;
msgList.IconRound = true;
msgList.IconRadius = 8;

var item1 = AntdUI.Chat.MsgItem("张三");
item1.ID = "u1001";
item1.Text = "最近消息：晚上一起吃饭？";
item1.Time = "09:30";
item1.Count = 2;
item1.Badge = "2";
item1.Select = true;
msgList.Items.Add(item1);

var item2 = AntdUI.Chat.MsgItem("李四");
item2.ID = "u1002";
item2.Text = "文件已收到";
item2.Time = "昨天";
msgList.Items.Add(item2);

msgList.ItemClick = function(sender,e){
    var it = e.Item;
    winform.text = "当前会话：" + (it ? it.Name : "");
}

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

## 常用属性

### MsgList

- `Items`：会话项集合，添加 `AntdUI.Chat.MsgItem`。
- `IconRound`：头像是否圆形。
- `IconRadius`：头像圆角。
- `IconFit`：头像填充方式，`AntdUI.TFit`。
- `ForeColor`：普通文字颜色。
- `ForeActive`：选中状态文字颜色。
- `BackHover`：鼠标悬停背景色。
- `BackActive`：选中状态背景色。

### MsgItem

- `ID`：业务标识。
- `Name`：标题/联系人名称。
- `Text`：最近消息摘要。
- `Time`：时间文本。
- `Icon`：头像图片。
- `Count`：未读计数。
- `Badge`：角标文本；可配合 `BadgeBack`、`BadgeFore` 设置颜色。
- `Select`：是否选中。
- `Visible`、`Tag`：显示控制与业务对象绑定。

## 常用事件

- `ItemClick(sender,e)`：点击会话项，常用 `e.Item` 取得 `MsgItem`。
- `ItemDoubleClick(sender,e)`：双击会话项。
- `ItemSelected(sender,e)`：选中项改变。

```aardio
msgList.ItemDoubleClick = function(sender,e){
    var it = e.Item;
    if(it) winform.msgbox("打开会话：" + it.Name);
}
```

## 与 ChatList 组合

实际聊天窗口通常左侧放 `MsgList`，右侧放 `ChatList`。同一 aardio `custom` 宿主内放多个 AntdUI 控件时，建议先创建 `AntdUI.BaseForm(winform.host)` 作为 .NET 容器，再设置子控件 `Parent`、`Location`、`Size`。

```aardio
import win.ui;
import dotNet.AntdUI;
import System.Drawing;

var winform = win.form(text="聊天布局";right=760;bottom=480);
winform.add(host={cls="custom";left=0;top=0;right=760;bottom=480;z=1});

var baseForm = AntdUI.BaseForm(winform.host);

var msgList = AntdUI.Chat.MsgList();
msgList.Parent = baseForm;
msgList.Location = System.Drawing.Point(0,0);
msgList.Size = System.Drawing.Size(240,480);

var chatList = AntdUI.Chat.ChatList();
chatList.Parent = baseForm;
chatList.Location = System.Drawing.Point(240,0);
chatList.Size = System.Drawing.Size(520,480);

var user = AntdUI.Chat.MsgItem("张三");
user.Text = "你好，欢迎使用 dotNet.AntdUI";
msgList.Items.Add(user);

chatList.Items.Add(AntdUI.Chat.TextChatItem("你好！").SetName("张三"));

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

## 注意事项

- `MsgList` 只负责会话列表，不会自动切换右侧 `ChatList` 内容；需要在 `ItemClick` 中自行加载对应会话记录。
- `Items` 是 .NET 集合，用 `.Add(item)` 添加；如果需要批量更新，建议先构造好数据再刷新。
- 颜色属性在 aardio 中直接使用 `0xAARRGGBB` 数值；复杂配色建议先用默认主题。
