2009-06-30 11 views
0

Lorsque mon programme est chargé, je lis une valeur du registre et définit une zone de liste déroulante en lecture seule, mais lorsqu'elle est chargée, la liste déroulante affiche l'élément précédent dans la collection. J'utilise le code ci-dessous pour définir le texte.C# Définition du texte de la liste déroulante lorsque le formulaire est chargé

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

Comment dois-je définir la liste déroulante à la valeur que j'ai lu dans le registre?

Merci

Répondre

0

Vous pouvez l'ajouter dans la collection d'éléments:

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

Salut, La valeur est déjà dans la collection d'articles, comment votre code serait différent? –

+0

La définition de la propriété de texte ne sélectionne pas toujours l'élément approprié de la collection. Donc si 'type' est en collection, et que votre combobox est en lecture seule, il est préférable de définir SelectedIndex au lieu de Text. – arbiter

1

Vous trouvez la valeur par sa valeur de texte, puis sélectionnez l'élément de la liste retournée par ce son 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); 
} 
Questions connexes