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

VB.NET Discussion :

Portée des variables dans une classe [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut Portée des variables dans une classe
    Bonjour à tous,

    Je voudrais savoir quelle est la porté de ma variable, voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Partial Class SearchByBatch
         Inherits System.Web.UI.Page
     
         Private _batchValues As BatchValues = New BatchValues
     
         Protected Sub ButtonSearch_Click() Handles ButtonSearch.Click
              If TextBoxSearch.ToString <> "" Then
                   Try
                        _batchValues.gridViewValues(Me.TextBoxSearch.Text.ToString, Me.ph)
                   Catch ex As Exception
                        MsgBox(ex.Message)
                   End Try
              End If
     
              For Each element In _batchValues.listCheckBox
                   MsgBox("test")
                   'J'ai plusieurs box qui s'affichent
              Next
         End Sub
     
         Protected Sub ButtonExportExcel_Clik() Handles ButtonExport.Click
              For Each element In _batchValues.listCheckBox
                   MsgBox("test")
                   'Et là rien ne s'affiche ..
              Next
         End Sub
     
    End Class
    Pourquoi est-ce que j'ai des "test" qui s'affichent dans ma première méthode alors que dans la deuxième non ?

    J'ai pourtant déclarée la variable avant mes méthodes, elle devrait être "globale" au deux méthodes ?

    Merci d'avance

  2. #2
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Parce que _batchValues.listCheckBox est vide (ne contient aucun élément). Donc tu ne rentre pas dans la boucle.

  3. #3
    Membre actif
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Par défaut
    et pour te convaincre de cette réponse pertinente met ta msgbox(test) avant ton for each ... meilleur debug du monde

    sinon le pas à pas est ton ami ça te permet de contrôler ce que tu fais

  4. #4
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut
    Les Msgbox servaient juste pour démontrer l'exemple.

    J'ai compris que ma fonction _batchValues.listCheckBox ne renvoi rien.

    Ce que je ne comprends pas, c'est pourquoi vu que ma variable est globale à la classe ?

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Jah73 Voir le message
    Ce que je ne comprends pas, c'est pourquoi vu que ma variable est globale à la classe ?
    Debug pas à pas en mettant un point d'arrêt sur la ligne 7 de ton code (cf. ton premier post), sur le IF. Regarde si tu rentres bien dedans.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut
    Merci pour vos réponses

    Petite précision, c'est de l'ASP.NET avec du VB.NET

    J'ai compris ce qui se passe :

    Quand mon programme arrive à la fin de ma méthode ButtonSearch_Click
    , il "détruit" la classe. Du coup, après mon END SUB, ma variable _batchValues n'existe plus.

    Comment je peux faire ?

    En gros, voila ce que fait mon programme :

    L'utilisateur clique sur le bouton search et la méthode _batchValues.gridViewValues(Me.TextBoxSearch.Text.ToString, Me.ph) est excécutée.

    Dans cette méthode, je créé une liste de checkbox "customs" qui me permettent d'avoir des valeurs associées a chacune d'entre elle.

    _batchValues.listCheckBox me permet de récupérer cette liste.

    Grace à ma méthode ButtonExportExcel_Clik(), j'aimerai récupérer cette liste mais elle est vide comme la classe a été "détruite"

    J'espère que vous comprenez mon problème

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

Discussions similaires

  1. Portée d'une variable dans une classe
    Par jeff0123 dans le forum Langage
    Réponses: 7
    Dernier message: 12/02/2014, 15h30
  2. Regrouper des variables dans une nouvelle classe
    Par saraharas dans le forum SAS Base
    Réponses: 2
    Dernier message: 13/06/2011, 15h27
  3. [C#2005] Stocker des variables dans une classe
    Par Herlece dans le forum Windows Forms
    Réponses: 7
    Dernier message: 13/10/2008, 10h30
  4. Pouvoir gérer les actions des boutons dans une classe
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 08/07/2005, 12h08
  5. Réponses: 2
    Dernier message: 27/03/2005, 16h09

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