【问题标题】:C# - getting multiple data on comboboxC# - 在组合框上获取多个数据
【发布时间】:2017-07-08 05:02:35
【问题描述】:

我有一个名为 AirportList 的表,其中有 airportCode、airportName 和 airportCountry 作为列。 在 Windows 应用程序表单上,我有一个组合框,我使用 LinQ 链接到 AirportList。

我只想要组合框显示、airportName、airportCountry 这是代码:

cmbLocation.DataSource = (from A in cfse.AirportList
                       orderby A.airportName
                       select new
                       {
                          A.airportName, 
                          A.airportCountry
                       }).ToList();

使用该代码,组合框显示 例如:{airportName = 洛杉矶国际机场,airportCountry = 美国} 和 { } 符号出现在每一行。

我只想成为美国洛杉矶国际机场。 我的代码有什么问题,请帮助我

【问题讨论】:

  • 查询看起来没问题...您确定组合框列配置正确吗?

标签: c# winforms linq combobox


【解决方案1】:

Winforms ComboBox 使用 ToString 方法的结果显示其项目。在您的代码中,您创建匿名对象,应用到这些实例的 ToString 会产生您的结果。

您可以简单地声明一个仅用于您的组合框的类

public class AirportItem
{
    public string Name {get;set;}
    public string Country {get;set;}
    public override string ToString()
    {
        return string.Join(", ", this.Name, this.Country);
    }
}

并将您的代码更改为

cmbLocation.DataSource = (from A in cfse.AirportList
                          orderby A.airportName
                          select new AirportItem
                          {
                              Name = A.airportName,
                              Country = A.airportCountry
                          }).ToList();

现在,选择表达式创建了 AirportItem 类的实例,并且该类覆盖了 ToString 方法,该方法准确地返回了您希望在组合框中显示的内容。

【讨论】:

    【解决方案2】:

    组合框没有列,因此您必须将对象转换为字符串。您可以使用 Combobox 的 DisplayMember 属性来做到这一点。

    首先,创建一个包装类:

    public class Airport {
      public string Name { get; set; }
      public string Country { get; set; }
    
      public string DisplayName {
        get { return Name + ", " + Country; }
      }
    }
    

    然后把数据放到包装类里面:

    cmbLocation.DisplayMember = "DisplayName";
    cmbLocation.DataSource = 
        (from A in cfse.AirportList
         orderby A.airportName
         select new Airport { 
              Name = A.airportName, 
              Country = A.airportCountry
         }).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多