Obtenir la liste déroulante texte en C#
J'ai rempli une zone de liste déroulante avec les valeurs de l'Enum.
Maintenant une zone de liste déroulante est le texte à droite? Donc je suis en utilisant un getter et un setter. Je vais avoir des problèmes à la lecture du texte.
Voici le code:
public BookType type
{
get
{
return (BookType)Enum.Parse(typeof(BookType), this.typeComboBox.Text);
}
set
{
this.typeComboBox.Text = value.ToString();
}
}
Pour une raison quelconque, this.typeComboBox.Text
renvoie toujours une chaîne vide lorsque je sélectionne un élément dans la zone de liste déroulante.
Quelqu'un voit ce que je fais mal?
EDIT: je suis venu à la conclusion que le problème réside dans le timing.
Le point dans le temps où je invoquer le texte est en effet j'ai modifié la zone de liste déroulante, mais encore avant que la valeur est interprétée comme une valeur.
Problème fixe d'une manière différente maintenant, merci pour toutes les idées.
- Un problème est d'utiliser la propriété Text. Utilisez la propriété SelectedItem ou dans le pire des cas, le SelectedText propertiy.
Vous devez vous connecter pour publier un commentaire.
Je viens de créer un simple formulaire windows, et tout a bien fonctionné pour moi. Voici le code.
De l'essayer. cela a fonctionné pour moi.
La GetItemText méthode d'analyse de l'élément et renvoie le texte de la liés à cet élément.
Définir la
DropDownStyle
de la zone de liste déroulanteDropDownList
. Cela permettra d'assurer que seuls les éléments déjà dans la liste peuvent être sélectionnés (pas besoin de vérifier que le texte est en fait une valeur valide).Ensuite, si vous utilisez
Enum.GetValues(typeof(BookType))
pour remplir la zone de liste déroulante, puistypeComboBox.SelectedItem
propriété sera une valeur deBookType
. De sorte que vous pouvez l'utiliser dans la propriété de lecture /définition.Donc, pour résumer. Vous n'avez pas à lier la zone de liste déroulante à une liste de valeurs de texte aussi longtemps que vous utilisez la liste déroulante style. Utilisez la propriété SelectedItem pour obtenir un élément de l'voulait type au lieu de vérifier la propriété Text.
Edit: Vous pouvez vérifier la propriété SelectedItem null
La zone de liste déroulante commence à l'indice -1, ce qui n'a pas de texte, donc une chaîne vide: ""
Je puis changer l'indice de BookType que j'ai besoin et puis j'ai reçu le bon de sortie...
Vous devez l'essayer.typeComboBox.SelectedItem.ToString()
Avez-vous essayé d'utiliser
this.typeComboBox.SelectedText
au lieu detypeComboBox.Text
?