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...)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
Merci de poster les réponses au groupe afin d'en faire profiter à tous
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.
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.