c#设置SelectedValue后列表框值为空

本文关键字:列表 设置 SelectedValue | 更新日期: 2023-09-27 18:12:18

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

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#设置SelectedValue后列表框值为空

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

下面的例子将设置SelectedValue
 lstCompany.SelectedValue = Convert.ToInt64(4251);
 lstCompany.SelectedValue = 4251L;

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

 lstCompany.SelectedValue = 4251;