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

acceder au procédure public de la form de lancement

6 réponses
Avatar
ArlodVig
Lorsque je fais un programme, la form de lancement (ex principale) n'an pas
besoin d'être déclaré,

Pour les autres form, je les déclare par exemple
public F_form2 as new form2

Pour F_form2 je pux accéder aux sub qui sont public par F_form2.subp

Mais pour la fenêtre de lancement je ne sais pas accéder au sub public (ni
aux varaibles puliques de la form principale d'ailleurs)

La solution doit être simple, mais je ne trouve pas

6 réponses

Avatar
Mathieu Francesch
Bonjour,

Je t'ai fais un petit exemple dénué de sens mais qui j'espère te mettra sur
la route :

#######################################################

Imports System.Windows.Forms

'Ceci est ma Form principale
Public Class Form1
Public Sub ProcedureForm1()
MessageBox.Show("Coucou de Form1")
End Sub

Dim MaForm2 As New Form2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
MaForm2.ProcedureForm2()
Me.ProcedureForm1()
End Sub

End Class

Public Class Form2
Public Sub ProcedureForm2()
MessageBox.Show("Coucou de Form2")
End Sub
End Class

###################################################

Est ce que cela t'aiguille un peu ?


--
Cordialement,

Mathieu Francesch



"ArlodVig" wrote:

Lorsque je fais un programme, la form de lancement (ex principale) n'an pas
besoin d'être déclaré,

Pour les autres form, je les déclare par exemple
public F_form2 as new form2

Pour F_form2 je pux accéder aux sub qui sont public par F_form2.subp

Mais pour la fenêtre de lancement je ne sais pas accéder au sub public (ni
aux varaibles puliques de la form principale d'ailleurs)

La solution doit être simple, mais je ne trouve pas


Avatar
ArlodVig
Mathieu,

Merci beaucoup pour ta réponse, le problème que j'ai, ce n'est pas d'accéder
depuis form1 vers form 2, mais l'inverse.

Si l'on prend ton petit exemple ce que je voudrais faire c'est depuis form2
lancer la procédure dans form1 sachant que celle-ci est la form principale de
lancement

Je voudrais par exemple depuis une procédure de form2 mettre à jour un label
dans form1. Mais je n'arrive pas à avoir la visibilité de la form1 depuis la
form2.

Si tu as la solution je serasi vraiment très heureux

Bien cordialement

Maurice





"Mathieu Francesch" a écrit :

Bonjour,

Je t'ai fais un petit exemple dénué de sens mais qui j'espère te mettra sur
la route :

#######################################################

Imports System.Windows.Forms

'Ceci est ma Form principale
Public Class Form1
Public Sub ProcedureForm1()
MessageBox.Show("Coucou de Form1")
End Sub

Dim MaForm2 As New Form2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
MaForm2.ProcedureForm2()
Me.ProcedureForm1()
End Sub

End Class

Public Class Form2
Public Sub ProcedureForm2()
MessageBox.Show("Coucou de Form2")
End Sub
End Class

###################################################

Est ce que cela t'aiguille un peu ?


--
Cordialement,

Mathieu Francesch



"ArlodVig" wrote:

> Lorsque je fais un programme, la form de lancement (ex principale) n'an pas
> besoin d'être déclaré,
>
> Pour les autres form, je les déclare par exemple
> public F_form2 as new form2
>
> Pour F_form2 je pux accéder aux sub qui sont public par F_form2.subp
>
> Mais pour la fenêtre de lancement je ne sais pas accéder au sub public (ni
> aux varaibles puliques de la form principale d'ailleurs)
>
> La solution doit être simple, mais je ne trouve pas


Avatar
Mathieu Francesch
Bonsoir,

Est ce que cela te convient mieux ?

Imports System.Windows.Forms

'Ceci est ma Form principale
Public Class Form1
Public Sub ProcedureForm1()
Me.Label2.Text = "ArlodVig"
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim MaForm2 As New Form2
MaForm2.MofifierLabel1Form1()
MaForm2.MofifierLabel2Form1()
End Sub
End Class

Public Class Form2
Sub MofifierLabel1Form1()
Form1.Label1.Text = "Maurice"
End Sub

Sub MofifierLabel2Form1()
Form1.ProcedureForm1()
End Sub
End Class

Sinon pour faire dialoguer 2 forms entre elles (Je prends ton exemple de la
mise à jours d'un Label de la Form1 à partir de la form2) tu dois utiliser la
méthode showdialog (dans le cas où tu veux afficher ta form2. Donc cela
donnerai ceci

Dim Maform2 as new Form2
Maform2.ShowDialog

'On imagine alors une zone de texte dans ta form2 (Maform2) où tu saisierais
'Maurice et en quittant ta form2

form1.label1.text = Maform2.textbox1.text

(Encore une fois si tu affiches ta form2)

Si on est encore loin du but, je te propose que tu post ton bout de code
afin que nous l'étudions ensemble.

Math


--
Cordialement,

Mathieu Francesch



"ArlodVig" wrote:

Mathieu,

Merci beaucoup pour ta réponse, le problème que j'ai, ce n'est pas d'accéder
depuis form1 vers form 2, mais l'inverse.

Si l'on prend ton petit exemple ce que je voudrais faire c'est depuis form2
lancer la procédure dans form1 sachant que celle-ci est la form principale de
lancement

Je voudrais par exemple depuis une procédure de form2 mettre à jour un label
dans form1. Mais je n'arrive pas à avoir la visibilité de la form1 depuis la
form2.

Si tu as la solution je serasi vraiment très heureux

Bien cordialement

Maurice





"Mathieu Francesch" a écrit :

> Bonjour,
>
> Je t'ai fais un petit exemple dénué de sens mais qui j'espère te mettra sur
> la route :
>
> #######################################################
>
> Imports System.Windows.Forms
>
> 'Ceci est ma Form principale
> Public Class Form1
> Public Sub ProcedureForm1()
> MessageBox.Show("Coucou de Form1")
> End Sub
>
> Dim MaForm2 As New Form2
>
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles Button1.Click
> MaForm2.ProcedureForm2()
> Me.ProcedureForm1()
> End Sub
>
> End Class
>
> Public Class Form2
> Public Sub ProcedureForm2()
> MessageBox.Show("Coucou de Form2")
> End Sub
> End Class
>
> ###################################################
>
> Est ce que cela t'aiguille un peu ?
>
>
> --
> Cordialement,
>
> Mathieu Francesch
>
>
>
> "ArlodVig" wrote:
>
> > Lorsque je fais un programme, la form de lancement (ex principale) n'an pas
> > besoin d'être déclaré,
> >
> > Pour les autres form, je les déclare par exemple
> > public F_form2 as new form2
> >
> > Pour F_form2 je pux accéder aux sub qui sont public par F_form2.subp
> >
> > Mais pour la fenêtre de lancement je ne sais pas accéder au sub public (ni
> > aux varaibles puliques de la form principale d'ailleurs)
> >
> > La solution doit être simple, mais je ne trouve pas


Avatar
ArlodVig
Bonjour Mathieu,

C'est bizarre, d'après ce que tu dis il n'y a pas de fifférence, mais chez
moi
(Visual basic.net 2003)
Je n'ai pas de pb pour atteindre la form 2 depuis la form1

Mais lorsque je tape dans le code de la form2

Form1.Label1.Text = "Maurice"
J'ai toujours une erreur :
"Une référence à un membre non partagé requiert une référence d'objet"

Ce que je n'ai pas depuis form1 puisque j'ai déclaré

Dim MaForm2 As New Form2

Pourtant d'après tes exemple cela doit fonctionner sous ton environnement,
chez moi j'ai toujours cette erreur.

Sans doute qu'il doit falloir configurer un élément de visuel ???

Bien cordialement

Maurice






"Mathieu Francesch" a écrit :

Bonsoir,

Est ce que cela te convient mieux ?

Imports System.Windows.Forms

'Ceci est ma Form principale
Public Class Form1
Public Sub ProcedureForm1()
Me.Label2.Text = "ArlodVig"
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim MaForm2 As New Form2
MaForm2.MofifierLabel1Form1()
MaForm2.MofifierLabel2Form1()
End Sub
End Class

Public Class Form2
Sub MofifierLabel1Form1()
Form1.Label1.Text = "Maurice"
End Sub

Sub MofifierLabel2Form1()
Form1.ProcedureForm1()
End Sub
End Class

Sinon pour faire dialoguer 2 forms entre elles (Je prends ton exemple de la
mise à jours d'un Label de la Form1 à partir de la form2) tu dois utiliser la
méthode showdialog (dans le cas où tu veux afficher ta form2. Donc cela
donnerai ceci

Dim Maform2 as new Form2
Maform2.ShowDialog

'On imagine alors une zone de texte dans ta form2 (Maform2) où tu saisierais
'Maurice et en quittant ta form2

form1.label1.text = Maform2.textbox1.text

(Encore une fois si tu affiches ta form2)

Si on est encore loin du but, je te propose que tu post ton bout de code
afin que nous l'étudions ensemble.

Math


--
Cordialement,

Mathieu Francesch



"ArlodVig" wrote:

> Mathieu,
>
> Merci beaucoup pour ta réponse, le problème que j'ai, ce n'est pas d'accéder
> depuis form1 vers form 2, mais l'inverse.
>
> Si l'on prend ton petit exemple ce que je voudrais faire c'est depuis form2
> lancer la procédure dans form1 sachant que celle-ci est la form principale de
> lancement
>
> Je voudrais par exemple depuis une procédure de form2 mettre à jour un label
> dans form1. Mais je n'arrive pas à avoir la visibilité de la form1 depuis la
> form2.
>
> Si tu as la solution je serasi vraiment très heureux
>
> Bien cordialement
>
> Maurice
>
>
>
>
>
> "Mathieu Francesch" a écrit :
>
> > Bonjour,
> >
> > Je t'ai fais un petit exemple dénué de sens mais qui j'espère te mettra sur
> > la route :
> >
> > #######################################################
> >
> > Imports System.Windows.Forms
> >
> > 'Ceci est ma Form principale
> > Public Class Form1
> > Public Sub ProcedureForm1()
> > MessageBox.Show("Coucou de Form1")
> > End Sub
> >
> > Dim MaForm2 As New Form2
> >
> > Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
> > System.EventArgs) Handles Button1.Click
> > MaForm2.ProcedureForm2()
> > Me.ProcedureForm1()
> > End Sub
> >
> > End Class
> >
> > Public Class Form2
> > Public Sub ProcedureForm2()
> > MessageBox.Show("Coucou de Form2")
> > End Sub
> > End Class
> >
> > ###################################################
> >
> > Est ce que cela t'aiguille un peu ?
> >
> >
> > --
> > Cordialement,
> >
> > Mathieu Francesch
> >
> >
> >
> > "ArlodVig" wrote:
> >
> > > Lorsque je fais un programme, la form de lancement (ex principale) n'an pas
> > > besoin d'être déclaré,
> > >
> > > Pour les autres form, je les déclare par exemple
> > > public F_form2 as new form2
> > >
> > > Pour F_form2 je pux accéder aux sub qui sont public par F_form2.subp
> > >
> > > Mais pour la fenêtre de lancement je ne sais pas accéder au sub public (ni
> > > aux varaibles puliques de la form principale d'ailleurs)
> > >
> > > La solution doit être simple, mais je ne trouve pas


Avatar
Mathieu Francesch
Bonjour Maurice,

Est ce qu'il est possible que tu post ton code avec tes différentes
déclarations ?

Cela permettra de voir plus facilement où résidé l'erreur (dans les
modificateurs d'accès ect ...)

Merci

--
Cordialement,

Mathieu Francesch



"ArlodVig" wrote:

Bonjour Mathieu,

C'est bizarre, d'après ce que tu dis il n'y a pas de fifférence, mais chez
moi
(Visual basic.net 2003)
Je n'ai pas de pb pour atteindre la form 2 depuis la form1

Mais lorsque je tape dans le code de la form2

Form1.Label1.Text = "Maurice"
J'ai toujours une erreur :
"Une référence à un membre non partagé requiert une référence d'objet"

Ce que je n'ai pas depuis form1 puisque j'ai déclaré

Dim MaForm2 As New Form2

Pourtant d'après tes exemple cela doit fonctionner sous ton environnement,
chez moi j'ai toujours cette erreur.

Sans doute qu'il doit falloir configurer un élément de visuel ???

Bien cordialement

Maurice






"Mathieu Francesch" a écrit :

> Bonsoir,
>
> Est ce que cela te convient mieux ?
>
> Imports System.Windows.Forms
>
> 'Ceci est ma Form principale
> Public Class Form1
> Public Sub ProcedureForm1()
> Me.Label2.Text = "ArlodVig"
> End Sub
>
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles Button1.Click
> Dim MaForm2 As New Form2
> MaForm2.MofifierLabel1Form1()
> MaForm2.MofifierLabel2Form1()
> End Sub
> End Class
>
> Public Class Form2
> Sub MofifierLabel1Form1()
> Form1.Label1.Text = "Maurice"
> End Sub
>
> Sub MofifierLabel2Form1()
> Form1.ProcedureForm1()
> End Sub
> End Class
>
> Sinon pour faire dialoguer 2 forms entre elles (Je prends ton exemple de la
> mise à jours d'un Label de la Form1 à partir de la form2) tu dois utiliser la
> méthode showdialog (dans le cas où tu veux afficher ta form2. Donc cela
> donnerai ceci
>
> Dim Maform2 as new Form2
> Maform2.ShowDialog
>
> 'On imagine alors une zone de texte dans ta form2 (Maform2) où tu saisierais
> 'Maurice et en quittant ta form2
>
> form1.label1.text = Maform2.textbox1.text
>
> (Encore une fois si tu affiches ta form2)
>
> Si on est encore loin du but, je te propose que tu post ton bout de code
> afin que nous l'étudions ensemble.
>
> Math
>
>
> --
> Cordialement,
>
> Mathieu Francesch
>
>
>
> "ArlodVig" wrote:
>
> > Mathieu,
> >
> > Merci beaucoup pour ta réponse, le problème que j'ai, ce n'est pas d'accéder
> > depuis form1 vers form 2, mais l'inverse.
> >
> > Si l'on prend ton petit exemple ce que je voudrais faire c'est depuis form2
> > lancer la procédure dans form1 sachant que celle-ci est la form principale de
> > lancement
> >
> > Je voudrais par exemple depuis une procédure de form2 mettre à jour un label
> > dans form1. Mais je n'arrive pas à avoir la visibilité de la form1 depuis la
> > form2.
> >
> > Si tu as la solution je serasi vraiment très heureux
> >
> > Bien cordialement
> >
> > Maurice
> >
> >
> >
> >
> >
> > "Mathieu Francesch" a écrit :
> >
> > > Bonjour,
> > >
> > > Je t'ai fais un petit exemple dénué de sens mais qui j'espère te mettra sur
> > > la route :
> > >
> > > #######################################################
> > >
> > > Imports System.Windows.Forms
> > >
> > > 'Ceci est ma Form principale
> > > Public Class Form1
> > > Public Sub ProcedureForm1()
> > > MessageBox.Show("Coucou de Form1")
> > > End Sub
> > >
> > > Dim MaForm2 As New Form2
> > >
> > > Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
> > > System.EventArgs) Handles Button1.Click
> > > MaForm2.ProcedureForm2()
> > > Me.ProcedureForm1()
> > > End Sub
> > >
> > > End Class
> > >
> > > Public Class Form2
> > > Public Sub ProcedureForm2()
> > > MessageBox.Show("Coucou de Form2")
> > > End Sub
> > > End Class
> > >
> > > ###################################################
> > >
> > > Est ce que cela t'aiguille un peu ?
> > >
> > >
> > > --
> > > Cordialement,
> > >
> > > Mathieu Francesch
> > >
> > >
> > >
> > > "ArlodVig" wrote:
> > >
> > > > Lorsque je fais un programme, la form de lancement (ex principale) n'an pas
> > > > besoin d'être déclaré,
> > > >
> > > > Pour les autres form, je les déclare par exemple
> > > > public F_form2 as new form2
> > > >
> > > > Pour F_form2 je pux accéder aux sub qui sont public par F_form2.subp
> > > >
> > > > Mais pour la fenêtre de lancement je ne sais pas accéder au sub public (ni
> > > > aux varaibles puliques de la form principale d'ailleurs)
> > > >
> > > > La solution doit être simple, mais je ne trouve pas


Avatar
ArlodVig
Ci dessous le code de la form1

Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Code généré par le Concepteur Windows Form "

Public Sub New()
MyBase.New()

'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()

'Ajoutez une initialisation quelconque après l'appel
InitializeComponent()

End Sub

'La méthode substituée Dispose du formulaire pour nettoyer la liste des
composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer

'REMARQUE : la procédure suivante est requise par le Concepteur Windows
Form
'Elle peut être modifiée en utilisant le Concepteur Windows Form.
'Ne la modifiez pas en utilisant l'éditeur de code.
Public WithEvents Label1 As System.Windows.Forms.Label
Public WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button
Me.Label1 = New System.Windows.Forms.Label
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(74, 81)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(120, 68)
Me.Button1.TabIndex = 0
Me.Button1.Text = "Button1"
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(29, 17)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(115, 30)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Label1"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

Public Sub ProcedureForm1()
Me.Label1.Text = "ArlodVig"
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim MaForm2 As New Form2
MaForm2.MofifierLabel1Form1()
MaForm2.MofifierLabel2Form1()
End Sub

End Class


et celui de la form2
Public Class Form2
Inherits System.Windows.Forms.Form

#Region " Code généré par le Concepteur Windows Form "

Public Sub New()
MyBase.New()

'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()

'Ajoutez une initialisation quelconque après l'appel
InitializeComponent()

End Sub

'La méthode substituée Dispose du formulaire pour nettoyer la liste des
composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer

'REMARQUE : la procédure suivante est requise par le Concepteur Windows
Form
'Elle peut être modifiée en utilisant le Concepteur Windows Form.
'Ne la modifiez pas en utilisant l'éditeur de code.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
components = New System.ComponentModel.Container()
Me.Text = "Form2"
End Sub

#End Region
Sub MofifierLabel1Form1()
Form1.Label1.Text = "Maurice"
End Sub

Sub MofifierLabel2Form1()
Form1.ProcedureForm1()
End Sub

End Class


Dans cette form2 lorsque je tape form1.
dans la fenetre contextuelle je ne vois pas apparaitre les procédure et
objet publics de form1

Les 2 lignes contenant form1. sortent en erreur


Maurice