2

我有一个 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号码

有人可以告诉我我在这里做错了什么。

4

1 回答 1

2

可能有另一种方法,但您可以做的一件事是将需要显示的列表成员展平并绑定到该列表成员。

例如:

var SocketInfos = sockets.Select((s) => new {ClientIpAddress = s.ConnectionInfo.ClientIpAddress,
                                             Socket = s}).ToList();

ListBox1.DataSource=SocketInfos ;
ListBox1.DisplayMember="ClientIpAddress";

但是,每当您更改源列表时,您都需要重新生成列表。

这样,您仍然可以从选定的 ListBox 项返回到选定的 Socket 实例。

于 2012-08-09T13:14:04.010 回答