我有一个 FLECk.IWebSocketConnection 列表
我正在尝试使用 IWebSocketConnection.ConnectionInfo.ClientIpAddress 属性在列表框中显示此列表,但我一定做错了什么
Sockets= new List<IWebSocketConnection>();
ListBox1.DataSource=Sockets;
ListBox1.DisplayMember="ConnectionInfo.ClientIpAddress";
当我使用添加到套接字时
Sockets.Add(socket);
我必须重新绑定(bind)数据源
ListBox1.DataSource=Sockets;
ListBox1.DisplayMember="ConnectionInfo.ClientIpAddress";
但是列表框中显示的是“Fleck.WebSocketConnection”,而不是预期的 Ip 编号。
为了澄清,列出了连接的写入数量。我只是得到了错误的显示信息。如果我创建一个标签并将其文本设置为
label1.Text =((IWebSocketConnection)SocketList.Items[0]).ConnectionInfo.ClientIpAddress;
显示IP号码
有人可以告诉我我在这里做错了什么吗?
最佳答案
可能还有另一种方法,但您可以做的一件事就是展平您需要显示的列表成员并将其绑定(bind)到该列表。
例如:
var SocketInfos = sockets.Select((s) => new {ClientIpAddress = s.ConnectionInfo.ClientIpAddress,
Socket = s}).ToList();
ListBox1.DataSource=SocketInfos ;
ListBox1.DisplayMember="ClientIpAddress";
不过,每当您更改源列表时,您都需要重新生成列表。
这样您仍然可以从选定的列表框项返回到选定的套接字实例。
关于c# - 如何选择较低级别的项目作为列表框的显示成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884128/