2016-10-10 6 views
0

Ich habe eine Listbox basierend auf einer Datenbanktabelle erstellt, in der die DisplayMember-Elemente der Listbox über Zeichenfolgenverkettung erstellt werden und die ValueMember-Elemente die bigInt PK aus der Tabelle darstellt. Die Listbox ist an ein Text/Value-Objekt gebunden, wie unten gezeigt.C# Listbox Wert ist Null nach dem Festlegen von SelectedValue

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; 
    } 
} 

Die Listbox wird aufgefüllt und richtig angezeigt wird, aber wenn ich die SelectedValue Eigenschaft über den Code unter dem Listenfeld des SelectedValue Änderungen einzustellen versuchen, auf null.

lstCompany.SelectedValue = 16844; 

Antwort

2

Wenn die SelectedValue eines ganzen Zahlen von der gleichen Art von Integer sein muss der neue Wert ist, dessen Wert listbox Einstellung. Wenn Sie versuchen, einen Int64-Wert festzulegen, ohne explizit einen Int64-Typ zu senden, führt dies zu einem automatischen Fehler, wodurch der SelectedValue-Wert der Listbox auf null gesetzt wird.

Die folgenden Beispiele werden die SelectedValue

lstCompany.SelectedValue = Convert.ToInt64(4251); 

lstCompany.SelectedValue = 4251L; 

Der folgende Code wird unbemerkt fehlschlagen und stellen Sie die Listbox des SelectedValue auf null gesetzt

lstCompany.SelectedValue = 4251; 
Verwandte Themen