如何使用 DisplayMember 在数据源是 List 时获取 string[] 的第一个元素

本文关键字:string 获取 元素 第一个 何使用 DisplayMember 数据源 List | 更新日期: 2023-09-27 18:35:37

我是C#和GUI编程的新手,所以我觉得这是一个简单的问题,但是DisplayMember上的文档让我感到困惑。

List<string[]> serverInfo = new List<string[]>();
serverInfo.Add(new string[] { "server one", "1.2.3.4", "12345" });
serverInfo.Add(new string[] { "server two", "1.2.3.4", "12346" });
serverInfo.Add(new string[] { "server three", "1.2.3.5", "12343" });
ComboBox serverPickList = new ComboBox();
serverPickList.DataSource = serverInfo;
serverPickList.DisplayMember = "???";

ComboBox 的选项应该是"服务器一"、"服务器二"和"服务器三",但我仍然希望绑定 string[] 数组,因为我将处理它们。

如何使用 DisplayMember 在数据源是 List<string[]> 时获取 string[] 的第一个元素

serverPickList.DataSource = serverInfo.Select(x => new { ColA = x[0], ColB =x[1], ColC=x[2] }).ToList();
serverPickList.DisplayMember = "ColA";

你为什么不把它做一个类?

class ServerInfo
{
    public string Name { get; set; }
    public string OtherStuff { get; set; }
    public string OtherStuff2 { get; set; }
    public ServerInfo(string name, string otherStuff, string otherStuff2)
    {
        this.Name = name;
        this.OtherStuff = otherStuff;
        this.OtherStuff2 = otherStuff2;
    }
}

然后:

List<ServerInfo> serverInfo = new List<ServerInfo>();
serverInfo.Add(new ServerInfo("server one", "1.2.3.4", "12345"));
serverInfo.Add(new ServerInfo("server two", "1.2.3.4", "12346"));
serverInfo.Add(new ServerInfo("server three", "1.2.3.5", "12343"));
ComboBox serverPickList = new ComboBox();
serverPickList.DataSource = serverInfo;
serverPickList.DisplayMemeber = "Name";