imajneb
Messages postés9Date d'inscriptionsamedi 1 février 2003StatutMembreDernière intervention10 mars 2010
-
10 mars 2010 à 12:11
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
10 mars 2010 à 18:00
Bonjour,
Je cherche à convertir cette ligne de code de VB6 à VB.NET.
Bien que la syntaxe soit correcte en VB.NET, ca provoque une erreur.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 10 mars 2010 à 16:13
Petite précision :
(peut-être que ton erreur vient de là, je sais pas)
Contrairement à VB6 ou tous les contrôles d'une Form sont mis dans la collection Controls de la Form, en .Net chaque contrôle est mis dans la collection Controls de son contrôle Parent (ou container)
Ainsi, par exemple, un Textbox qui est positionné sur un Panel, lui-même positionné sur la Form.
Me.Controls("TextBox1") marche en VB6, mais renvoie rien en .Net, TextBox1 ne fait pas parti de la collection des contrôles de la Form.
En .Net il faudra faire Me.Panel1.Controls("TextBox1")
Par contre tu pourrais utiliser Me.Controls.Find("TextBox1",True) en mettant le second paramètre à True pour faire la recherche dans tous les contrôles de la form ainsi que dans les contrôles enfant de ces contrôles et ainsi de suite.
Cette fonction est un peu plus complexe car elle ne renvoie pas un contrôle mais bien une collection de tous les contrôles correspondant au critère.
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
imajneb
Messages postés9Date d'inscriptionsamedi 1 février 2003StatutMembreDernière intervention10 mars 2010 10 mars 2010 à 15:03
Salut PCPT,
Merci beaucoup pour ton aide.
Malheureusement, le code renvoyait la même erreur:
"L'exception NullReferenceException n'a pas été gérée"
"La référence d'objet n'est pas définie à une instance d'un objet."
J'ai alors modifié les "paramètres" du projet, au niveau de l'onglet compileur et onglet Application.
Maintenant ca fonctionne, mais je ne sais pas quels paramètres a permis de le refaire fonctionner. J'ai beau essayer de mettre comme avant, l'erreur ne se produit plus.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 10 mars 2010 à 15:55
peut-être juste que les options de VS indiquaient de ne pas re-compiler le code avant de l'executer, du coup il lançait l'ancienne version (pas les modifs indiquées)
mais si tout va c'est bien
bonne continuation
Vous n’avez pas trouvé la réponse que vous recherchez ?
imajneb
Messages postés9Date d'inscriptionsamedi 1 février 2003StatutMembreDernière intervention10 mars 2010 10 mars 2010 à 16:41
Voici le code utilisant Controls.Find et qui marche très bien :
Dim i As Integer
Dim ctrls() As Control = Me.Controls.Find("TextBox1", True)
For i = 0 To UBound(ctrls)
If ctrls(i).Name = "TextBox1" Then 'On verifie que le controle est le bon
ctrls(i).Text = "BlaBla"
End If
Next