我有一个FLECk.IWebSocketConnection列表
我试图使用IWebSocketConnection.ConnectionInfo.ClientIpAddress属性在列表框中显示此列表,但我必须做错了
Sockets= new List<IWebSocketConnection>();
ListBox1.DataSource=Sockets;
ListBox1.DisplayMember="ConnectionInfo.ClientIpAddress";
当我使用
添加到套接字时Sockets.Add(socket);
我必须重新绑定数据源
ListBox1.DataSource=Sockets;
ListBox1.DisplayMember="ConnectionInfo.ClientIpAddress";
但是lisbox中的显示是“Fleck.WebSocketConnection”而不是预期的Ip编号。
只是为了澄清,列出了连接的写入数量。我只是得到错误的显示信息。如果我创建标签并将其文本设置为
label1.Text =((IWebSocketConnection)SocketList.Items[0]).ConnectionInfo.ClientIpAddress;
显示IP号
有人可以告诉我这里我做错了什么。
答案 0 :(得分:2)
可能有另一种方法,但您可以做的一件事是将需要显示和绑定的列表成员展平。
例如:
var SocketInfos = sockets.Select((s) => new {ClientIpAddress = s.ConnectionInfo.ClientIpAddress,
Socket = s}).ToList();
ListBox1.DataSource=SocketInfos ;
ListBox1.DisplayMember="ClientIpAddress";
无论何时更改源列表,都需要重新生成列表。
这样您仍然可以从选定的ListBox项目返回选定的Socket实例。