Membre non partagé entre 2 forms [Résolu]

Signaler
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014
-
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014
-
Bonjour,

J'ai 2 forms
Form1 ouverte
Form2 que j'ouvre à partir de la form1

Si de la form2 avec un bouton de commande, je souhaite ajouter un titre dans la combobox situé dans la form1, j'ai l'erreur suivante :

une reference à un membre non partagé requiert une référence objet

En VB6 il suffisait d'appeler les forms par leur nom
Pas possible en vb Net ?

Comment faites-vous ?

merci d'avance

10 réponses

Messages postés
7413
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 juin 2021
124
Cela semble simple:

  Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.Text = "Mon titre"
End Sub

A moins que je n'ai pas compris la question
Messages postés
7413
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 juin 2021
124
Ou cela:

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Form1.Text = "Mon titre"
End Sub
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014

voici le code que j'inscrit dans la form2

'on ajoute le titre dans la listbox de la form1
form1.listbox.Items.Add(titre)
form1.listbox.Refresh()
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour

Form2 que j'ouvre à partir de la form1

quelle code as tu écris ?
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014

bonjour,
Suite à ma question, j'ai utilisé Ctype comme ci-dessous :

De la form1 :
Form2.ShowDialog(Me)

Puis dans la form2 :
'on ajoute le titre dans la listbox de form1
CType(Me.Owner, form1).listbox.Items.Add(date & " " & titre)
CType(Me.Owner, form1.Refresh()

'on registre le tire
SaveListBox2(CType(Me.Owner, form1).listbox, chemin & "titre.lst")

Mon probleme est que la form2 est modale et de ce fait je ne peut plus naviquer sur la form1.

Une solution pour y remédier ?
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
mets du clair dans la suite de tes messages
tu poses une question et ensuite tu poses une autre
ta question initiale était

une reference à un membre non partagé requiert une référence objet

maintenant tu demandes
Mon probleme est que la form2 est modale et de ce fait je ne peut plus naviquer sur la form1.

as tu résolu l'erreur n 1 ?
si form2 est modale tant que tu n'as fermé form2 tu n'as pas accès
à form1 c'est justement le modal est destiné pour cela
si non n'affiche pas form2 comme modal
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
6 juin 2021
155
Je dirais, mets une variable globale dans un module, puis lors de l'ouverture de la Form1, tu renseignes cette variable, que tu lis dans ta Form2 .

Il y a plus propre (avec membres Shared), mais déjà essayes cela.
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014

1/ avant d'utiliser CType, voici le code que j'utilisais :

De la form1 :
Form2.Show()

et dans la form2 :
form1.listbox.Items.Add(date & " " & titre)
form1.Refresh()

'on registre le tire
SaveListBox2(form1.listbox, chemin & "titre.lst")

C'est avec ce code que j'ai eu l'erreur
une reference à un membre non partagé requiert une référence objet

Il faut en effet que je puisse naviguer dans les 2 forms et certaines données de form1 sont liées à la form2
En VB6 tres facile

2/ Alors j'ai utilisé Ctype qui me permet d'ajouter le titre à la listbox de la form1 à partir de la form2.
MAIS comme c'est modale, je suis embêté car je n'ai plus accès à la form1 car la form2 est modale.

Donc pour résumé :
1/ il faut que je puisse avoir accès aux 2 forms à tout moment
2/ il faut que je puisse activé des controle ou modifier des propriétés de controle dans chaque form à partir de l'une ou l'autre
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
6 juin 2021
155
As-tu essayé ma proposition ?
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014

oui je viens d'essayé
Cela peut marcher mais ma form1 est déjà ouverte.
Et donc quand form.load ne se delcenche pas
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014

form1.load ne se declenche pas puis que form1 est deja ouverte
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
6 juin 2021
155
Au besoin, utilise le constructeur :
Public Sub New ()

'Ton assignation ici

'Le code déjà présent là
End Sub
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
je n'ai aucun problème avec la 1er méthode

Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Form2.Show()
End Sub
End Class

Public Class Form2

Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Form1.ListBox1.Items.Add(Date.Now & " " & "blabla")
Form1.Refresh()

End Sub
End Class
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014

cs_shaw

cela ne focntionne pas.
Je ne suis pas en VB6
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
c'est du vb.net
Messages postés
86
Date d'inscription
jeudi 24 octobre 2013
Statut
Membre
Dernière intervention
2 avril 2014

alors pourquoi cela ne fonctionne pas chez moi