【问题标题】:C# Listbox Value is Null After Setting SelectedValue设置 SelectedValue 后 C# 列表框值为 Null
【发布时间】:2016-10-10 16:25:30
【问题描述】:

我创建了一个基于数据库表的列表框,其中列表框的 DisplayMember 项是通过字符串连接创建的,而 ValueMember 项表示表中的 bigInt PK。列表框绑定到一个 Text/Value 对象,如下所示。

List<ComboSearchItems> csi = new List<ComboSearchItems>();
     foreach(var i in q)
     {
          ComboSearchItems ci = new ComboSearchItems(String.Concat(i.Id, " - ", i.Name, " - ", i.CompanyName), i.Id);
          csi.Add(ci);
     }

     lstCompany.DataSource = csi;
     lstCompany.DisplayMember = "Text";
     lstCompany.ValueMember = "Value";
     lstCompany.SelectedIndex = 0;
     lstCompany.Refresh();

public class ComboSearchItems
{
    public string Text { get; set; }
    public Int64 Value { get; set; }

    //Constructor
    public ComboSearchItems(string t, Int64 v)
    {
        Text = t;
        Value = v;
    }
}

列表框已填充并正确显示,但是当我尝试通过下面的代码设置 SelectedValue 属性时,列表框的 SelectedValue 更改为 null。

 lstCompany.SelectedValue = 16844;

【问题讨论】:

    标签: c# combobox null listbox selectedvalue


    【解决方案1】:

    在设置值为整数的列表框的 SelectedValue 时,新值必须是相同类型的整数。尝试设置 Int64 值而不显式发送 Int64 类型将导致静默失败,从而导致列表框的 SelectedValue 设置为 null。

    以下示例将设置 SelectedValue

     lstCompany.SelectedValue = Convert.ToInt64(4251);
    
     lstCompany.SelectedValue = 4251L;
    

    以下代码将静默失败并将列表框的 SelectedValue 设置为 null

     lstCompany.SelectedValue = 4251;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多