[VB.Net] Comment accéder aux composants des autres form ?

Comment accéder aux composants des autres form ? [VB.Net] - C#/.NET managed - Programmation

Marsh Posté le 10-01-2005 à 16:20:44    

Bonjour,  
Voilà je viens de passer de vb6 à vb.net et j'ai de très grosses difficultés...  :heink:  
Je vais faire clair avec un exemple très simple d'Appli Windows :  
 
j'ai une form : form  
un module mod  
sur ma form j'ai un label : lbl  
je voudrais faire une fonction f dans le module me permettant de changer le label, du genre :  
 
sub f()  
 
form.lbl.text = "Coucou !"  
 
end sub  
 
Bien sûr, cela ne marche pas...   :cry:  
Merci de votre aide !


---------------
// Bef@
Reply

Marsh Posté le 10-01-2005 à 16:20:44   

Reply

Marsh Posté le 10-01-2005 à 16:41:19    

Ouch, déjà si tu commences VB.NET, essaye de trouver des ressources sur la programmation orientée objet.
 
Dans ton cas, il faudrait une méthode publique pour accéder à ton composant privé, instancier ta form depuis le module et appeller la méthode qui va changer le texte du label...
 
Mais comme dit, commence par voir de l'orienté objet.

Reply

Marsh Posté le 10-01-2005 à 22:43:19    

Merci de ta réponse,
j'ai regardé un peu de doc sur la POO en VB.Net
Est-ce que tu crois crois que créer un nouveau composant à partir d'un label et y ajouter une methode publique permettant de modifier sa propriété Text serait une bonne solution ?


---------------
// Bef@
Reply

Marsh Posté le 10-01-2005 à 22:45:27    

regarde donc du coté de set/get, et file lire un tuto de POO


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 10-01-2005 à 23:11:12    

Bef@ a écrit :

Merci de ta réponse,
j'ai regardé un peu de doc sur la POO en VB.Net
Est-ce que tu crois crois que créer un nouveau composant à partir d'un label et y ajouter une methode publique permettant de modifier sa propriété Text serait une bonne solution ?


 
Moi je metterais la méthode dans la Form :)
 
Genre dans mon form :

Code :
  1. Public Sub ChangeLabelText(byval text as String)
  2.   Me.lbl.Text = text
  3. End Sub

Reply

Marsh Posté le 11-01-2005 à 12:38:06    

ça y est ! je le tiens enfin...
Rooooo ske je sui content ! :D
J'avais déjà essayé la methode que tu m'a donné sur le post précédent et j'avoues que je ne m'étais pas attardé dessus voyant que cela ne marchait pas...
Mais grâce à ton post j'ai finalement décidé de me bouger un peu plus les fesses !
 
Les languages .Net, comme tu le sais surement sont "Full Object"
Il est inutile en fait de rajouter une methode publique à form (la fenêtre dans laquelle se trouve lbl) car on peut accéder directement à sa propriété Text à partir d'une fonction d'un module (ou bien d'une autre fenêtre).
Il en fait dans cette methode créer une instance de form et ensuite lui affecter la fenêtre active de l'Appli, en gros, ça donne :
 
Module _mod
 
    Public Sub ChangeLabelText(ByVal s As String)
 
        Dim f As New form
        f = form.ActiveForm
        f.lbl.Text = s
 
    End Sub
 
End Module
 
Merci encore pour votre Aide !


---------------
// Bef@
Reply

Marsh Posté le 11-01-2005 à 16:42:47    

Ouais mais nan, là ça implique que lbl est public, ce qui est extrêmement déconseillé. Fallais faire comme moi, une méthode qui tripote au lbl. Ensuite y'a presque plus d'interêt aux modules en VB.NET....
 
Donc rebouge-toi les fesses :D Et change-nous tout ça ;)

Reply

Marsh Posté le 11-01-2005 à 16:48:30    

Okkkkaaaaayyyy je vien de comprendre l'intéré de la methode publique... alors on reprend :
 
'La methode publique dans form :
 
Public Sub ChangeLabelText(byval text as String)  
 
  Me.lbl.Text = text  
 
End Sub
 
'Et le module :
 
Module _mod  
 
    Public Sub ChangeLabel(ByVal s As String)  
 
        Dim f As New form  
        f = form.ActiveForm  
        f.ChangeLabelText(s)  
 
    End Sub  
 
End Module
 
Alors, qu'est ce que tu penses de ça cette fois-ci ???


---------------
// Bef@
Reply

Marsh Posté le 11-01-2005 à 19:24:55    

Voilà, là ça me plaît :)

Reply

Marsh Posté le 11-01-2005 à 19:52:03    

Ahhhhh ba voilà, on y arrive enfin !
Merci beaucoup encore pour ton aide. :)


---------------
// Bef@
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed