Quelqu'un peut-il peut-on expliquer ceci:
MessageBox.Show(test.ToString());
5 Réponses :
ne doit-il pas être comme ceci: Je suppose que votre liste contient un type de chaîne? P> Je ne sais pas si tel est correct cependant, je ne l'ai pas testé. p> p>
Bien sûr, cela fonctionne - mais ajoutez () reçoit un objet et n'est-il pas simplement appeler objet.tostring () qui est virtuel? Si je change de classe à hériter de l'objet ça marche ...
Les éléments dans une liste de liste sont une collection d'objets, pas de chaînes. P>
voir MSDN: Listbox.ObjectCollection Méthode .Add p>
Par conséquent, vous devez ajouter l'instance en tant que chaîne (ex: listbox1.items.add (test.tostring ()); code>) à l'extrémité avant ou sur le backend lors de l'examen La liste Vous devez appeler Tostring (ex:
listbox1.items [0] .tostring (); code>). P>
Non - Si vous étiez correct, pourquoi ajouter un INT à une liste de liste? Il appelle la méthode de ToString virtuel () dans l'objet. Si je chante ma classe pour hériter d'un objet, cela fonctionne aussi bien ...
Définissez l'affichage sur la liste de la liste sur la propriété du type de test.
public class Test : List<Int32> { public String Name { get { return this.ToString(); } } public override string ToString() { return "Test"; } }
Oui, je sais que aussi ... La question est de savoir pourquoi pas listbox.items.add CallInting My Tostring remplacé ()?
Pour que cela fonctionne, vous devez désactiver la mise en forme:
listBox1.FormattingEnabled = false;
Je ne peux pas croire que les boîtes de liste fonctionnent de cette façon. Il m'a fallu pour toujours pour même comprendre la combinaison correcte de mots à Google pour trouver cette question pour résoudre le problème. Terrible. Bonne réponse cependant.
Je suis tombé sur ça aussi (et un autre merci, Manji!). J'ai eu quelque chose comme ceci:
public override string ToString() { return string.Concat("[", MessageTime.ToString("yyyy-MM-dd HH:mm:ss.fffff"), "] ", MessageText); }