web-dev-qa-db-fra.com

ComboBox.SelectedText ne me donne pas le SelectedText

Je construis une chaîne et le code ressemble à

String status = "The status of my combobox is " + comboBoxTest.SelectedText

J'utilise WinForm dans VS2010

Le résultat ressemble à

"Le statut de ma combobox est"

50
Cocoa Dev

Je pense que tu veux utiliser

String status = "The status of my combobox is " + comboBoxTest.Text

Propriété SelectedText de MSDN

Obtient ou définit le texte sélectionné dans la partie modifiable d'un ComboBox.

propriété While de MSDN

Obtient ou définit le texte associé à ce contrôle.

93
Marco

De la documentation :

Vous pouvez utiliser la propriété SelectedText pour extraire ou modifier le texte actuellement sélectionné dans un contrôle ComboBox. Cependant, vous devez savoir que la sélection peut changer automatiquement en raison de l'interaction de l'utilisateur. Par exemple, si vous récupérez la valeur SelectedText dans un gestionnaire d'événements Button Click, la valeur sera une chaîne vide. Cela est dû au fait que la sélection est automatiquement effacée lorsque le focus de saisie passe de la liste déroulante au bouton.

Lorsque la zone de liste déroulante perd le focus, le point de sélection se déplace au début du texte et le texte sélectionné n'est plus sélectionné. Dans ce cas, obtenir la propriété SelectedText récupère une chaîne vide et définir la propriété SelectedText ajoute la valeur spécifiée au début du texte.

16
Shree

Je pense que vous n’avez pas besoin de SelectedText mais vous pouvez en avoir besoin

String status = "The status of my combobox is " + comboBoxTest.Text;
9
Marshal

Je fais face à ce problème 5 minutes avant.

Je pense qu'une solution (avec Visual Studio 2005) est:

myString = comboBoxTest.GetItemText(comboBoxTest.SelectedItem);

Pardonne-moi si je me trompe.

Pour obtenir l'élément sélectionné, vous devez utiliser la propriété SELECTEDITEM de comboBox. Et puisqu'il s'agit d'un objet, si vous voulez l'assigner à une chaîne, vous devez le convertir en chaîne en utilisant la méthode ToString ():

string myItem = comboBox1.SelectedItem.ToString(); //this does the trick
4
Mitja Bonca

Essaye ça:

String status = "The status of my combobox is " + comboBoxTest.text;

2
infredha

Voici comment je voudrais aborder le problème, en supposant que vous vouliez changer le texte de say, une étiquette

    private void comboBoxtest_SelectedIndexChanged(object sender, EventArgs e)
    {
        var combotext = comboBoxtest.Text;
        var status = "The status of my combo box is" + combotext;
        label1.Text = status;
    }
2
Allison Steranko

Si vous liez votre Combobox à quelque chose comme KeyValuePair, avec des propriétés dans le constructeur comme suit ...:

 DataSource = dataSource,
 DisplayMember = "Value",
 ValueMember = "Key"

donc dataSource est de type KeyValuePair ...

Vous finissez par avoir à faire cela ...

  string v = ((KeyValuePair)((ComboBox)c).SelectedItem).Value;

(J'avais une forme dynamique - où c était de type Control - donc je devais le transtyper dans ComboBox)

0
JGFMK