Passage de paramètres entre 2 Forms.
Bonsoir, Désolé si ma question peux paraître basique mais les questions de base peuvent aussi être les plus importantes pour produire un bon code et je pense aussi que ça va intéresser beaucoup de monde. J'ai fait un exemple simple avec un code minimaliste pour bien comprendre qu'elle est le meilleur moyen pour passer 1 paramètre (que j'ai nommé Param) d'une Form1 vers une Form2.
J'ai aussi d'autres impératifs qu'il serait trop long à expliquer mais que j’évoquerais peut-être en fonction de vos suggestions.
Pour l'instant il s'agit de faire simple sachant que dans mon programme mon Paramètre ne sera pas une simple String mais des objets ou des variables que je n'ai pas encore définis précisément. Dans l'idée il faut pouvoir modifier le paramètre depuis Form1 et que l'on puisse relire celui-ci dans Form2. Bien sûre on pourrait utiliser la variable public Param dans les 2 Form mais est-ce la bonne façon de faire ?.
J'ai fait un code simple en utilisant Byref pour passer le paramètre mais apparemment ça ne suffit pas. Pourtant il me semblait que en utilisant byref on pouvait déclarer plusieurs variables pointant vers la même donnée en mémoire.
Le code de Form1 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Public Class Form1
Public Parametre As String
Public MaForm2 As Form2
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Parametre = TextBoxParamètre.Text
MaForm2 = New Form2(Parametre)
End Sub
Private Sub TextBoxParamétre_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBoxParamètre.TextChanged
Parametre = TextBoxParamètre.Text
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles ButtonShoxForm2.Click
MaForm2.Show()
End Sub
End Class |
Le code de Form2 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Public Class Form2
Private _Paramètre As String
Public Sub New()
' Cet appel est requis par le concepteur.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
End Sub
Public Sub New(ByRef Param As String)
Call Me.New()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
_Paramètre = Param
End Sub
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Call Refresh()
End Sub
Private Sub ButtonRefresh_Click(sender As System.Object, e As System.EventArgs) Handles ButtonRefresh.Click
TextBoxParamètre.Text = _Paramètre
End Sub
End Class |
Merci beaucoup pour vos conseils et suggestions.