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 :

Blocage suite à System.StackOverFlow


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Par défaut Blocage suite à System.StackOverFlow
    bonjour à tous
    Je fais appel une fois de plus à votre bonne volonté et à vos compétences.
    J'ai un datagridview qui comporte 3 colonnes.
    Je voudrais pouvoir selectionner la prochaine cellule où écrire en fonction de critères donnés.
    Par exemple, si je valide la cellule colonne 0, ligne 1, je voudrais sélectionner la cellule colonne 1, ligne 1
    Voilà un extrait de mon 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
    Dim WithEvents DGV_SaisieNoms As New DataGridView
     
               With DGV_SaisieNoms
     
               ' .....................................
               ' Instanciation du DataGridView
               ' ................................
     
               End With
     
               Private Sub AssistanceSaisie(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) _
               Handles DGV_SaisieNoms.CellValidated
                   If DGV_SaisieNoms.Rows.Item(e.RowIndex).Cells.Item(0).Value <> "" And
                       DGV_SaisieNoms.Rows.Item(e.RowIndex).Cells.Item(1).Value = "" Then
                       ' Validation cellule colonne 0, ligne actuelle
                       If e.ColumnIndex = 0 Then
                           ' aller à colonne 1, ligne actuelle
                           DGV_SaisieNoms.CurrentCell = DGV_SaisieNoms(e.ColumnIndex + 1, e.RowIndex)                   
                           ' Validation cellule colonne 1, ligne actuelle
                           ElseIf e.ColumnIndex = 1 Then
                           ' écrire ? dans la cellule colonne 1, ligne actuelle
                           DGV_SaisieNoms.Rows.Item(e.RowIndex).Cells.Item(1).Value = "?"
                           ' aller à colonne 0, ligne suivante
                           DGV_SaisieNoms.CurrentCell = DGV_SaisieNoms(e.ColumnIndex - 1, e.RowIndex + 1)                   
                       End If               
                   End If
               End Sub
    Le problème est que le programme génère un System.StackOverFlow aux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DGV_SaisieNoms.CurrentCell = DGV_SaisieNoms(e.ColumnIndex + 1, e.RowIndex)
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DGV_SaisieNoms.CurrentCell = DGV_SaisieNoms(e.ColumnIndex - 1, e.RowIndex + 1)
    Merci d'avance à qui pourra m'éclairer sur l'origine du problème et sur la solution

  2. #2
    Membre Expert Avatar de ed73170
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2009
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2009
    Messages : 765
    Par défaut
    Bonjour,

    Le plus souvent ce genre de chose arrive si par exemple dans un événement tu appelles une fonction qui pour une raison où une autre va générer ce même événement, qui va appeler la fonction, qui va générer l'événement, etc... jusqu'à arriver à un Stack Overflow à cause de l'empilement des appels.

    Vérifie donc ce qui se passe dans la pile des appels.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Par défaut
    Bonsoir et merci ed73170

    J'avoue (éternel débutant de 83 ans) que je ne sais pas comment procéder pour accéder à la pile des appels
    Tant pis si j'abuse, puis-je vous demander de me l'indiquer ?
    Merci d'avance

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Par défaut
    Re Bonsoir ed73170

    J'annule ma demande, j'ai cherché (ce que j'aurais dû faire avant de vous solliciter) et je crois avoir trouvé, le problème semble venir des e.RowIndex et e.ColumnIndex qui appellent à nouveau la procédure.

    Votre aide m'a été précieuse, merci infiniment

  5. #5
    Membre Expert Avatar de ed73170
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2009
    Messages
    765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2009
    Messages : 765
    Par défaut
    Je réponds un peur tardivement, mais voici comment faire pour voir la pile des appels avec Visual Studio : C'est dans le menu "Deboguer" puis "Fenêtres" puis "Pile des appels". Ensuite on met un point d'arrêt là où on veut voir les appels, on lance le programme en Debug, et lorsqu'il arrive au point d'arrêt on peut voir tous les appels permettant d'y arriver. En double cliquant sur une ligne on revient à l'appel en question.

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

Discussions similaires

  1. [REGEX] Blocage suite parsing ligne de grande taille
    Par ptonnerre dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2017, 16h25
  2. Blocage suite à un while
    Par Christophe Genolini dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 14/06/2013, 14h41
  3. blocage administrateur systeme
    Par JLC15 dans le forum Sécurité
    Réponses: 1
    Dernier message: 18/01/2009, 00h16
  4. Blocage du système avec ethernet
    Par Invité(e) dans le forum Matériel
    Réponses: 2
    Dernier message: 02/02/2005, 18h15
  5. [Système] Suite d'instructions non interrompue
    Par hyperion dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 19/07/2004, 11h24

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