Comment définir la sélection de l'élément de zone de liste déroulante en C# Windows Forms?
Je suis en train de mettre l'élément sélectionné de comboBox
sur l'événement click du contrôle DataGrid, mais je ne pouvais pas. J'ai googlé et essayé différentes manières, mais sans succès.
Pour moi SelectedIndex
est au travail, mais je ne pouvais pas trouver l'index des éléments dans la zone de liste déroulante, donc je ne peux pas sélectionner l'élément.
Pas de code de travail:
for (int i = 0; i < cmbVendor.Items.Count; i++)
if (cmbVendor.Items[i].ToString() == Convert.ToString(gridView1.GetFocusedRowCellValue("vVendor")))
{
cmbVendor.SelectedIndex = i;
break;
}
- Avez-vous essayé le réglage de l' .Texte/.Valeur (impossible de me souvenir laquelle ComboBox utilise) pour l'élément sélectionné?
- Utiliser une liste de classe qui contient un id, la valeur(une clé primaire) ,à remplir de liste déroulante source de données , puis utiliser la propriété selectedvalue: cmbVendor.SelectedValue
- sont le si obtenir la valeur true et probleme dans selectedIndex ou le si toujours faux ?
- GetFocusedRowCellValue() n'est pas une méthode de contrôle DataGrid. Si vous utilisez un contrôle de grille à partir d'un autre fournisseur ou de l'utilisation des méthodes d'extension, alors vous devez document dans votre question.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir votre index de l'élément par le
.Items.IndexOf()
méthode. Essayez ceci:Vous n'avez pas besoin d'effectuer une itération.
Vous pouvez trouver plus d'informations dans le Débordement de Pile question Comment puis-je régler l'élément sélectionné dans une liste déroulante pour correspondre à ma chaîne à l'aide de C#?.
Le suivant fonctionne parfaitement pour moi. Passer toute valeur ou le Texte qui est disponible dans la zone de liste déroulante.
Vous l'avez dans votre si:
Enfin je l'ai trouvé. C'est:
La propriété SelectedText est pour la partie sélectionnée du texte modifiable dans la zone de texte de la partie de la zone de liste modifiable.
En supposant
gridView1.GetFocusedRowCellValue("vVendor")
fonctionne vraiment comme prévu, le code suivant devrait résoudre le problème.Le code original a eu plusieurs appels à
gridView1.GetFocusedRowCellValue("vVendor")
, alors que vous avez seulement besoin d'une.L'a suggéré "comboBox1.Éléments.IndexOf(" suppose trop sur le contenu de
cmbVendor.Items
.J'ai eu un problème similaire et a travaillé partiellement avec l'aide d'autres réponses ici. Tout d'abord, mon problème était que
ne fonctionne pas comme prévu. La cause était que myItem était un objet à partir d'un groupe qui était en fait la même liste que les éléments dans la zone de liste déroulante, mais c'était en fait une copie de ces éléments. Donc myItem était identique à une entrée valide, mais lui-même n'était pas un objet valide à partir de la combobox1 conteneur.
La solution a été d'utiliser SelectedIndex au lieu de SelectedItem, comme ceci:
où
Si vous avez défini ValueMember propriété pour le contrôle zone de liste déroulante, vous pouvez simplement assingn la Valeur pour le contrôle zone de liste déroulante de la propriété SelectedValue. Vous n'avez pas à trouver l'index de manière explicite.
Voici un exemple:
Essayer cela fonctionnera très bien en C# d'application Windows
cela fonctionne pour moi.....