AntdUI.Chat.MsgList 是聊天界面左侧常见的会话/联系人列表控件。每一行使用 AntdUI.Chat.MsgItem 描述,可显示头像、名称、最近消息、时间、未读数或角标。
当前 DLL 已确认存在:
AntdUI.Chat.MsgList、AntdUI.Chat.MsgItem、AntdUI.Chat.MsgItemCollection。
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();
Items:会话项集合,添加 AntdUI.Chat.MsgItem。IconRound:头像是否圆形。IconRadius:头像圆角。IconFit:头像填充方式,AntdUI.TFit。ForeColor:普通文字颜色。ForeActive:选中状态文字颜色。BackHover:鼠标悬停背景色。BackActive:选中状态背景色。ID:业务标识。Name:标题/联系人名称。Text:最近消息摘要。Time:时间文本。Icon:头像图片。Count:未读计数。Badge:角标文本;可配合 BadgeBack、BadgeFore 设置颜色。Select:是否选中。Visible、Tag:显示控制与业务对象绑定。ItemClick(sender,e):点击会话项,常用 e.Item 取得 MsgItem。ItemDoubleClick(sender,e):双击会话项。ItemSelected(sender,e):选中项改变。msgList.ItemDoubleClick = function(sender,e){
var it = e.Item;
if(it) winform.msgbox("打开会话:" + it.Name);
}
实际聊天窗口通常左侧放 MsgList,右侧放 ChatList。同一 aardio custom 宿主内放多个 AntdUI 控件时,建议先创建 AntdUI.BaseForm(winform.host) 作为 .NET 容器,再设置子控件 Parent、Location、Size。
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) 添加;如果需要批量更新,建议先构造好数据再刷新。0xAARRGGBB 数值;复杂配色建议先用默认主题。