2009-10-26 5 views
1

Comment puis-je ajouter 10 articles à listBox dynamiquement à une zone de liste et après que je veux montrer la valeur de l'élément sélectionné dans l'événement de clic de liste.Travailler avec WinForms dans listbox (C#)

J'ai essayé comme ça

for(int i=1;i<10 ;i++) 
{ 
mylistbox.Items.Add(i.ToString()); 
} 

dans le gestionnaire d'événements click

MessageBox.Show(mylistbox.SelectedValue.ToString()); 

il affiche l'erreur.

Quel est le mal à cela?

+4

Quelle erreur est-il montrer? C'est très utile lorsque vous essayez de résoudre ce genre de problèmes ... Et avant de faire le MessageBox.Show, vérifiez d'abord s'il y a une SelectedValue (elle n'est pas nulle). – pyrocumulus

+1

Quelle erreur est affichée? –

+0

oui il montre une exception de référence nulle. Quelle est la raison? – Nagu

Répondre

0

Dmitriy a exactement.

Un bon moyen de vérifier ce qui se passe lorsque vous déboguez est de sélectionner 'mylistbox.SelectedValue' et de cliquer avec le bouton droit de la souris, puis de sélectionner 'Add Watch'. Vous pouvez ensuite suivre la valeur de cette propriété dans la fenêtre Espion.

Vous pouvez le faire avec une variable, et chaque fois que cela montre nulle et vous essayez d'utiliser cette valeur que vous savez qu'il va lancer une exception nulle de référence.

Il est également bon pour ramasser les lettres dans une chaîne que vous essayez de convertir en un entier, et d'autres similaires « d'oh! » des moments.

1

Essayez d'utiliser la place SelectedItem propriété. Fonctionne uniquement lorsque vous remplissez ListBox avec des objets et que vous avez attribué un ValueMember à

SelectedValue Voici un exemple minimal:

var mylistbox = new ListBox {Dock = DockStyle.Fill}; 
mylistbox.Click += (sender, e) => 
        MessageBox.Show(mylistbox.SelectedItem.ToString()); 
for (int i = 1; i < 10; i++) 
{ 
    mylistbox.Items.Add(i.ToString()); 
} 
new Form {Controls = {mylistbox}}.ShowDialog(); 
+0

Merci, ma réponse n'était pas correcte. – okutane

1

Utilisez le code suivant dans le gestionnaire de clic

MessageBox.Show (mylistbox.Text.ToString()); // Ceci montrera l'article choisi en tant que votre condition.

remplacer le .SelectedValue avec .Text