如何选择较低级别的项目作为ListBox的显示成员

时间:2012-08-09 13:05:42

标签: c# listbox

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

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

1 个答案:

答案 0 :(得分:2)

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

例如:

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

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

无论何时更改源列表,都需要重新生成列表。

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