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

C# Discussion :

TextBlock : NullReferenceException


Sujet :

C#

  1. #1
    Membre très actif Avatar de Ylmith
    Profil pro
    Powered by Laom and Bethecu
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Powered by Laom and Bethecu

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut TextBlock : NullReferenceException
    Bonjour,
    je me sers de cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    agentChoisi = ((TextBlock)ZL_ListeAgents.CurrentColumn.GetCellContent(ZL_ListeAgents.SelectedItem)).Text;
    pour récuperer le nom d'un agent dans une DataGrid, après click dans la
    DataGrid.

    Ca marche parfaitement mais je reçois une erreur "NullReferenceException"
    dès que je clique sur un autre bouton de recherche, ce qui me paraît pour le moins étrange.

    Le débogueur me suggère de créer une instance de TextBlock mais quand je le fais il ne reconnaît pas l'instance crée

    Une suggestion ---> Merci.

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    J'image que (TextBlock)ZL_ListeAgents.CurrentColumn.GetCellContent(ZL_ListeAgents.SelectedItem) doit être null, ce qui cause une exception quand tu essaye d'avoir la propriété Text.

    Qu'est-ce que tu entends par "ès que je clique sur un autre bouton de recherche". Tu peux donner plus d'info sur ce que tu fais?

  3. #3
    Membre très actif Avatar de Ylmith
    Profil pro
    Powered by Laom and Bethecu
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Powered by Laom and Bethecu

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    J'image que (TextBlock)ZL_ListeAgents.CurrentColumn.GetCellContent(ZL_ListeAgents.SelectedItem) doit être null,
    ce qui cause une exception quand tu essaye d'avoir la propriété Text.
    Non, au moment du click sur la liste (DataGrid) je récupère parfaitement la valeur.

    Citation Envoyé par GuruuMeditation Voir le message
    Qu'est-ce que tu entends par "ès que je clique sur un autre bouton de recherche". Tu peux donner plus d'info sur ce que tu fais?
    Par exemple : quand je sors de la liste, que je clique sur une liste de paramètres pour effectuer une nouvelle recherche
    ("Nom","Prenom","Age",etc.) et que je valide (donc bouton de validation) c'est à ce moment là que se produit l'erreur.
    C'est comme si le programme pensait que je clique à nouveau dans "ZL_ListeAgents" alors que ce n'est pas le cas.
    En fait l'évènement n'est pas un click, qui apparemment n'existe pas pour une DataGrid en WPF, mais un 'SelectionChanged'...

    J'ai ajouté un 'Catch' vide qui permet au programme de poursuivre mais ça ne règle pas le problème...

  4. #4
    Membre très actif Avatar de Ylmith
    Profil pro
    Powered by Laom and Bethecu
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Powered by Laom and Bethecu

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut
    Est-ce qu'il faudrait que l'évènement 'SélectionChanged' soit encapsulé dans un thread?

  5. #5
    Membre très actif Avatar de Ylmith
    Profil pro
    Powered by Laom and Bethecu
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Powered by Laom and Bethecu

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut
    Ou peut-on utiliser le textblock dans un 'Using'?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Par défaut
    Quand tu re-rempli ton DataGrid, je suppose que tu le vide, puis que tu le remplis.

    Une fois le DataGrid vide, il doit mettre une valeur vide à SelectedItem (forcément, le DataGrid est vide).

    Et c'est la que tu dois avoir ton évènement SelectionChanged et ton exception.

    Peut-être que vérifier que ta propriété ZL_ListeAgents.SelectedItem n'est pas nulle résoudrait ton problème ?

  7. #7
    Membre très actif Avatar de Ylmith
    Profil pro
    Powered by Laom and Bethecu
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Powered by Laom and Bethecu

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut
    Citation Envoyé par ketan Voir le message
    ...
    Peut-être que vérifier que ta propriété ZL_ListeAgents.SelectedItem n'est pas nulle résoudrait ton problème ?
    Ca ne change rien il m'affiche la même exception mais cette fois sur la
    vérification de la condition...

  8. #8
    Membre très actif Avatar de Ylmith
    Profil pro
    Powered by Laom and Bethecu
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Powered by Laom and Bethecu

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut
    Citation Envoyé par ketan Voir le message

    Quand tu re-rempli ton DataGrid, je suppose que tu le vide, puis que tu le remplis.

    Une fois le DataGrid vide, il doit mettre une valeur vide à SelectedItem (forcément, le DataGrid est vide).

    Et c'est la que tu dois avoir ton évènement SelectionChanged et ton exception.
    C'est effectivement ce que je pense mais comment clore l'évènement
    avant l'appel à la procédure suivante (et pourquoi n'est-il pas automatiquement clôt?)

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Par défaut
    Peux-tu nous fournir la code associé à l'action de ton bouton valider ?

    Vu ce que tu nous dis, c'est ZL_ListeAgents lui même qui vaudrait null quand tu exécute le rechargement de ton DataGrid.

    ZL_ListeAgents est-il mis à null quelque part dans ton code ?

  10. #10
    Membre très actif Avatar de Ylmith
    Profil pro
    Powered by Laom and Bethecu
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Powered by Laom and Bethecu

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Par défaut
    Citation Envoyé par ketan Voir le message
    Peux-tu nous fournir la code associé à l'action de ton bouton valider ?
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
         //========================== BT PARAMETRES VALIDER CLICK ================
            private void BT_ParametresValider_Click(object sender, RoutedEventArgs e)
            {
     
                //paramètre récupéré par le click dans la listbox
                paramLboxPrinc = this.ListBox_ParamPrinc.SelectedItem.ToString(); //Passé comme le 1er paramètre 
     
                if (paramLboxPrinc == "NOM")
                {
                    paramZoneAgent = this.ZT_AgentNom.Text;
                    //Requête Classement ASC
                    if (Btop_ClassementAsc.IsChecked == true)
                        ConstructionRequete("LIGNES", "AGENT_NOM", "AGENT_PRENOM", "COD_AGENT", "COEFF_SOIREE", "T_MAN_gest_AGENTS", "AGENT_NOM", paramZoneAgent, "AGENT_NOM", "ASC", "AGENT_PRENOM", "Recherche sur le paramètre principal " + paramLboxPrinc, 5);
                    //Requête Classement DESC
                    if (Btop_ClassementDesc.IsChecked == true)
                        ConstructionRequete("LIGNES", "AGENT_NOM", "AGENT_PRENOM", "COD_AGENT", "COEFF_SOIREE", "T_MAN_gest_AGENTS", "AGENT_NOM", paramZoneAgent, "AGENT_NOM", "DESC", "AGENT_PRENOM", "Recherche sur le paramètre principal " + paramLboxPrinc, 5);
                }
                if (paramLboxPrinc == "COEFF SOIREE")
                {
                    paramZoneAgent = this.ZT_AgentCoeff.Text;
                    //Requête Classement ASC
                    if (Btop_ClassementAsc.IsChecked == true)
                        ConstructionRequete("LIGNES", "AGENT_NOM", "AGENT_PRENOM", "COEFF_SOIREE", "COD_AGENT", "T_MAN_gest_AGENTS", "COEFF_SOIREE", paramZoneAgent, "COEFF_SOIREE", "ASC", "AGENT_NOM", "Recherche sur le paramètre principal " + paramLboxPrinc, 5);
                    //Requête Classement DESC
                    if (Btop_ClassementDesc.IsChecked == true)
                        ConstructionRequete("LIGNES", "AGENT_NOM", "AGENT_PRENOM", "COEFF_SOIREE", "COD_AGENT", "T_MAN_gest_AGENTS", "COEFF_SOIREE", paramZoneAgent, "COEFF_SOIREE", "DESC", "AGENT_NOM", "Recherche sur le paramètre principal " + paramLboxPrinc, 5);
                }
                if (paramLboxPrinc == "CODE AGENT")
                {
                    paramZoneAgent = this.ZT_AgentCode.Text;
                    //Requête Classement ASC
                    if (Btop_ClassementAsc.IsChecked == true)
                        ConstructionRequete("LIGNES", "AGENT_NOM", "AGENT_PRENOM", "COD_AGENT", "COEFF_SOIREE", "T_MAN_gest_AGENTS", "COD_AGENT", paramZoneAgent, "COD_AGENT", "ASC", "AGENT_NOM", "Recherche sur le paramètre principal " + paramLboxPrinc, 5);
                    //Requête Classement DESC
                    if (Btop_ClassementDesc.IsChecked == true)
                        ConstructionRequete("LIGNES", "AGENT_NOM", "AGENT_PRENOM", "COD_AGENT", "COEFF_SOIREE", "T_MAN_gest_AGENTS", "COD_AGENT", paramZoneAgent, "COD_AGENT", "DESC", "AGENT_NOM", "Recherche sur le paramètre principal " + paramLboxPrinc, 5);
                }
            }
    Je ne crois pas que ça va beaucoup vous aider...

    Citation Envoyé par ketan Voir le message
    Vu ce que tu nous dis, c'est ZL_ListeAgents lui même qui vaudrait null quand tu exécute le rechargement de ton DataGrid.

    ZL_ListeAgents est-il mis à null quelque part dans ton code ?
    Absolument pas...

    J'ai essayé avec la méthode 'SelectedCells'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private void ZL_ListeAgents_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
    mais ça provoque exactement la même erreur...

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/06/2007, 08h05
  2. Réponses: 2
    Dernier message: 05/06/2007, 17h22
  3. Réponses: 3
    Dernier message: 01/05/2007, 16h07
  4. [C#] NullReferenceException après un PostBack ?!
    Par Danny Blue dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/10/2006, 08h48
  5. [VB.NET] System.NullReferenceException
    Par LeGrosWinnie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 29/12/2005, 13h31

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