J'essaie de changer de texte d'étiquettes avec la commande Controls, à l'aide de cette ligne mais je reçois cette erreur p> "Système.NullReferenceException" P> > Si je supprime cette étiquette et modifiez-la pour une zone de texte (avec le même nom "c_0"), cela fonctionne! Mais j'ai besoin de le faire avec une étiquette non pas une zone de texte ... p>
3 Réponses :
Ceci est parce que vous n'avez pas de contrôle nommé c_0 code>. Je suggérerais d'utiliser ControlCollection.Find Pour obtenir votre contrôle, puis utilisez une instruction conditionnelle si l'instruction de vérification si le contrôle renvoyé existe:
Me.Controls.Find("C_" & 0, True).First().Text = "Conta:"
Ok gars, je pense que je trouve le problème ... J'ai fait une nouvelle étiquette nommée C_0 et cela a fonctionné !!! L'ancien label n'a pas ... Je ne sais pas pourquoi ... peut-être que c'est corrompu?
OK, je trouve le problème ... Cette commande ne fonctionnait pas car elle était dans une boîte de groupe.
Le code droit est alors p> merci pour Tout le monde aide! p> p>
Si vous utilisez le code que j'ai fourni, cela ne serait pas un problème en raison de la méthode ControlCollection.Find Méthode Paramètre code>.
C'est vrai, j'essaie de rendre cela aussi court que possible. Merci beaucoup.
Si vous voulez vraiment une solution à une doublure, vérifiez mon édition.
Votre problème est Control.Controls renvoie uniquement les commandes directement à l'intérieur du contrôle. Vous pouvez donc utiliser ces méthodes d'extension. Mettez ceci dans un module:
' general option to return all controls, filter on name Me.ChildControls().Single(Function(c) c.Name = "C_" & 0)).Text = "Conta:" ' generic option to return only Labels, filter on name Me.ChildControls(Of Label)().Single(Function(c) c.Name = "C_" & 0)).Text = "Conta:"
Ne peut pas reproduire. J'ai créé l'étiquette
l_0 code>, textbox
t_0 code> et cocher
c_0 code> et utilisé ce code:
Contrôles ("L_" & 0) .Text = "CONTA:" code>
Contrôles ("T_" & 0) .Text = "Conta:" code>
Contrôles ("C_" & 0) .Text = "Conta:" Conta: "Conta: " code> et toutes les propriétés de texte des commandes ont été définies. Vous devez soit pas avoir ce contrôle, soit vous avez une faute de frappe. En outre, n'utilisez pas la concaténation de chaîne
& code> sur un entier. Utilisez une interpolation ou une interpolation de chaîne.
Vous pouvez également afficher tous les noms de vos étiquettes dans une MessageBox:
MessageBox.show (string.join (",", contrôle.oftype (de l'étiquette) .Sélectionnez (Fonction (L) L.Name))) code> pour confirmer que vous l'avez réellement.
Jetez un coup d'œil sur les photos que j'ai ajoutées ... Hmm, je vais jeter un coup d'œil dans une interpolation à la chaîne! Merci MessageBox.show (string.join (",", contrôle.oftype (de Label) .Sélectionnez (fonction (L.Name L.Name))) Affiche une boîte de messagerie vierge pour moi !!!