IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Problème d'affectation d'une variable globale depuis une classe externe


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Problème d'affectation d'une variable globale depuis une classe externe
    Bonjour à tous,

    Mon problème est simple, et j'espère que je suis assez bête pour que la solution le soit tout autant.

    J'ai un Windows Form que j'appellerai Form1 ici. Dans cette classe, je déclare un tableau de String de taille 6 en Public.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public Class Form1
    	Public MonTableau(6) As String
    ...
    End Class
    J'ai un deuxième Windows Form (que j'appellerai ici Form2), lancé depuis le premier par le biais de la méthode ShowDialog().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim objForm2 As New Form2
    Form2.ShowDialog()
    Depuis ce deuxième formulaire, je lance une procédure, dont je veux qu'elle remplisse le tableau de mon Form1.

    J'ai donc quelque chose qui ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Class Form2
    	Private Sub MaProcédure
    		Form1.MonTableau(MonIndice) = "Quelque chose"
    	End Sub
    End Class
    Mon tableau reste vide !
    Je précise qu'au moment où j'affecte ma valeur dans le tableau, le formulaire Form1 est encore ouvert et instancié.

    J'ai trop peu d'expérience pour trouver la cause, et je serais bien heureux que vous me l'expliquiez !

    J'ai une idée, à confirmer ou infirmer : le fait que j'utilise la méthode ShowDialog() bloque l'accès en écriture à toute propriété du formulaire parent ?

    Merci !

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    showdialog n'a rien à voir la dedans

    par contre faire form1.quelque chose devrait être interdit

    form1 c'est une classe, pas une instance

    fait une recherche sur ce forum toutes les semaines quelqu'un vient poser la question "comment passer une variable d'une form à une autre"
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    bonjour,

    j'ai fait un exemple de votre problème mais je n'est pas trouve un problème
    voila le code

    form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Class Form1
        Public az(6) As String
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Form2.ShowDialog()
        End Sub
    End Class
    form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Class Form2
     
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Form1.az(1) = "1122"
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MessageBox.Show(Form1.az(1))
     
        End Sub
    End Class
    je ne trouve pas de problème

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    showdialog n'a rien à voir la dedans

    par contre faire form1.quelque chose devrait être interdit

    form1 c'est une classe, pas une instance

    fait une recherche sur ce forum toutes les semaines quelqu'un vient poser la question "comment passer une variable d'une form à une autre"
    Effectivement, ShowDialog n'a rien à voir puisque la méthode Show me crée le même souci.

    Par ailleurs, je sais que Form1 est une classe. Quand je parle d'instance, je parle du fait que la classe a été instanciée dans une variable qui a pour type cette classe.


    Je poursuivrai mes recherches demain, j'ai en effet parcouru les trois dernières pages de ce forum en ne trouvant pas la réponse à mon problème.

    @aztar

    Merci de t'être penché sur le problème.
    J'essayerai de faire comme toi, un nouveau projet, pour voir ce que ça donne. Ce que tu as fait correspond tout à fait à la situation dans laquelle le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox.Show(Form1.az(1))
    ne me revoie rien !

    A demain

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    J'ai déplacé la variable dans un module, ça marche bien sûr.
    Mais j'aurais aimé comprendre pourquoi ce que j'ai fait avant ne fonctionne pas.

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Astuce pour accès aux variables globales depuis une fonction
    Par manur0 dans le forum Général Python
    Réponses: 0
    Dernier message: 03/09/2009, 14h30
  2. Réponses: 3
    Dernier message: 20/03/2009, 15h44
  3. Accéder à une variable globale d'une DLL
    Par eric_marciano dans le forum Windows
    Réponses: 4
    Dernier message: 07/08/2008, 16h09
  4. Réponses: 9
    Dernier message: 16/03/2006, 20h34
  5. Réponses: 11
    Dernier message: 08/02/2006, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo