Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Manipulation des formulaires vb .net

1 réponse
Avatar
Sebastien
Bonjour,

je rencontre un probleme lors de la manipulation de=20
formulaires sous VB .NET :

A partir d'un formulaire, j'ouvre 2 formulaires en meme=20
temps :=20

Dim Ident_serveur As New Ident_serveur
Dim frmcommande As New frmcommande
Ident_serveur.Show()
frmcommande.Show()


Une fois mes deux formulaires ouverts, je saisie des infos=20
dans des variables dans le premier, puis sur le clic d'un=20
bouton je voudrais envoyer ces infos dans les variables du=20
second.

Je ne peux pas charger le premier puis le suivant.

J'ai pens=E9 =E0 l'utilisation d'un module qui stockerait des=20
variables globales aux deux formulaires, mais cela ne me=20
semble pas "propre".

Si quelqu'un a un tuyau, merci de me le donner !

Egalement, actuellement je fais un "show" puis un "hide"=20
sur mon frmcommande car je veux pas le voir tout de suite.=20
C'est pas beau car cela clip =E0 l'ecran, donc quelqu'un=20
sait-il comment faire pour charger en m=E9moire un=20
formulaire ? (le bon vieux "load" de vb6 quoi...)

Merci pour votre aide !
Seb.

1 réponse

Avatar
Zoury
Salut Seb! :O)

Avant de commencer, juste te faire remarquer que tu peux poster le message
dans les deux groupes en même temps en les séparants par une virgule comme
dans ce message. De cette façon les réponses d'un sont visible de l'autre et
vice et versa, évitant ainsi au gens de chercher les réponses à des
questions ayant été répondu sur un autre groupe.
Aussi le groupe microsoft.public.fr.vb étant réservé à Vb6 et ses versions
antérieurs, je te conseilles de poster tes questions concernant VB.NET sur
le groupe lui étant spécialement destiné. ;O)


Maintenant pour ton problème :

: J'ai pensé à l'utilisation d'un module qui stockerait des
: variables globales aux deux formulaires, mais cela ne me
: semble pas "propre".

En effet, ça ne fait pas très orienté objet. ;O)

Tu pourrais te créer une classe ou une structure qui contiendrait les
informations que tu veux transmettre à l'autre formulaire, créer une
instance de cette et ensuite passé l'instance de cette classe aux deux
formulaires. Ainsi lorsque tu mettras à jour l'instance de la classe, cette
mise à jour sera automatiquement connu de l'autre formulaire car ils
pointent sur le même objet.

bon maintenant un exemple...
'***
' 3 Formulaires
' 1 Classe - nommé CPersonne
'
' Form1
Public Class Form1
Inherits System.Windows.Forms.Form
Private m_per As CPersonne
Private m_mm As MainMenu

' Windows Form Designer generated code

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
m_mm = New MainMenu(New MenuItem() {New MenuItem("Charger les
formulaires", New EventHandler(AddressOf ChargerFormulaires))})
Me.IsMdiContainer = True
Me.Menu = m_mm
End Sub
Public Sub ChargerFormulaires(ByVal sender As Object, ByVal e As
System.EventArgs)
Dim frm2 As New Form2
Dim frm3 As New Form3
m_per = New CPersonne
frm2.Personne = m_per
frm3.Personne = m_per
frm2.MdiParent = Me
frm3.MdiParent = Me
frm2.Show()
frm3.Show()
End Sub
End Class

' Form2
' 4 Labels
' 1 Timer
Public Class Form2
Inherits System.Windows.Forms.Form
Private m_per As CPersonne
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Label1.Text = "Nom"
Label2.Text = ""
Label3.Text = "Prénom"
Label4.Text = ""
Me.Text = "Consultation d'une personne"
Timer1.Interval = 500
Timer1.Start()
End Sub
Public Property Personne() As CPersonne
Get
Return m_per
End Get
Set(ByVal Value As CPersonne)
m_per = Value
End Set
End Property
Private Sub Form2_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Timer1.Stop()
End Sub
Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As
System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
Label2.Text = m_per.Nom
Label4.Text = m_per.Prenom
End Sub
End Class

' Form3
' 2 TextBoxes
' 2 Labels
Public Class Form3
Inherits System.Windows.Forms.Form
Private m_per As CPersonne
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Label1.Text = "Nom"
Label2.Text = "Prénom"
TextBox1.Text = ""
TextBox2.Text = ""
Me.Text = "Édition d'une personne"
End Sub
Public Property Personne() As CPersonne
Get
Return m_per
End Get
Set(ByVal Value As CPersonne)
m_per = Value
End Set
End Property
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox1.TextChanged
If (Not m_per Is Nothing) Then m_per.Nom = TextBox1.Text
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles TextBox2.TextChanged
If (Not m_per Is Nothing) Then m_per.Prenom = TextBox2.Text
End Sub
End Class

' CPersonne
Public Class CPersonne
Private m_sNom As String
Private m_sPrenom As String
Public Property Nom() As String
Get
Return m_sNom
End Get
Set(ByVal Value As String)
m_sNom = Value
End Set
End Property
Public Property Prenom() As String
Get
Return m_sPrenom
End Get
Set(ByVal Value As String)
m_sPrenom = Value
End Set
End Property
End Class
'***

Remarques que tu pourrais procéder de la même manière en VB 6.

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous