2009-06-30 5 views
0

Wenn mein Programm lädt, lese ich einen Wert aus der Registrierung und legen Sie ein Read-Only-Kombinationsfeld auf diesen Wert, aber beim Laden der Combobox zeigt das Element davor in der Sammlung. Ich verwende den folgenden Code, um den Text festzulegen.C# Festlegen von Combobox-Text beim Laden der Form

RegistryKey OurKey = Registry.CurrentUser; 
OurKey = OurKey.OpenSubKey("Software\\test",true); 
type = OurKey.GetValue("Type").ToString(); 
cboType.Text = type; 

Wie sollte ich die Combobox auf den Wert setzen, den ich aus der Registrierung gelesen habe?

Dank

Antwort

0

Sie können es in die Elemente Sammlung:

int index = cboType.Items.IndexOf(type); 
if (index < 0) 
{ 
    cboType.Items.Insert(0, type); 
    cboType.SelectedIndex = 0; 
} 
else 
    cboType.SelectedIndex = index; 
+0

Hallo, Der Wert ist bereits in der Artikelsammlung, wie würde sich Ihr Code unterscheiden? –

+0

Einstellung Text-Eigenschaft nicht immer das entsprechende Element aus der Sammlung auswählen. Wenn also "type" in einer Sammlung ist und Ihre Combobox schreibgeschützt ist, ist es besser, SelectedIndex anstelle von Text zu setzen. – arbiter

1

Sie den Wert finden, indem es Textwert ist, und dann die zurückgegebene Liste Element auswählen, indem er Index:

RegistryKey OurKey = Registry.CurrentUser; 
OurKey = OurKey.OpenSubKey("Software\\test",true); 
type = OurKey.GetValue("Type").ToString(); 

ListItem selectItem = new ListItem(); 
selectItem = cboType.Items.FindByText(type); 

if (selectItem != null) 
{ 
    cboType.SelectedIndex = cboType.Items.IndexOf(selectItem); 
}