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 :

[VB.net 2005] Boucle et ArrayList


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut [VB.net 2005] Boucle et ArrayList
    hello,

    suite de mon travail, je dois parcourir des cellules d'un datagridview (remplis par dataset), récupérer des données decimal et les additionner...

    j'ai des choses qui sont ok :

    - pointer les cellules : DataGridView1.Rows(0).Cells(3).Value
    - créer un ArrayList pour stocker ces valeurs : Dim Liste As New ArrayList()

    le hic, c'est que suivant quand, j'ai x ou y rows... alors je fais un RowCount : Dim Nbre_Rows = DataGridView1.RowCount

    maintenant, je cherche la bonne synthaxe pour créer une boucle qui, suivant le nombre de rows, les parcours et mette les données dans mon tableau... pis à la fin, je fais un sum de l'ArrayList et c'est réglé...

    c'est au niveau de la boucle que ça pêche !...j'ai ça pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Nbre_Rows = DataGridView1.RowCount
    Dim Liste As New ArrayList()
    Dim Nbre_Rows2 = Nbre_Rows
     
            For i As Integer = 1 To Nbre_Rows
                Dim t As Decimal
                t = DataGridView1.Rows(Nbre_Rows2 - 1).Cells(3).Value
                Liste.Add(t)
            Next
    mais ça bug la moindre...

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    ton message d'erreur n'es pas du tout décrit essaye d'être plus précis STP.
    Fais un mode debug et regarde ou cela "bug" car on peut pas faire grand chose pour toi ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    Yes, excuse-moi

    ben en fait, si je mets le code dans le FormLoad, c'est simple, ça mouline et j'dois aller killer le process dans le TaskManager.....

    si je mets dans un autre sub (celui de mon DateTimePicker, puisqu'il me sert de filtre et que c'est là que les données changent...), ben mon form ne s'ouvre pas...
    car en fait, j'ai un form1 ou je me connecte... si c'est bon, je fais un Form2.Show()... et là il gueule...

    donc 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
     
     Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged
     
            Dim Nbre_Rows = DataGridView1.RowCount
     
            Dim Liste As New ArrayList()
     
            While Nbre_Rows <> 0
                Dim t As Decimal
                t = DataGridView1.Rows(Nbre_Rows - 1).Cells(3).Value
                Liste.Add(t)
     
            End While
     
            ShowDialog(Liste)
    et l'erreur est sur le Form1...

    ==> L'exception InvalidOperationException n'a pas été gérée

    Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : Impossible d'effectuer un cast d'un objet de type 'System.Collections.ArrayList' en type 'System.Windows.Forms.IWin32Window'.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Lors de l'appel à ShowDialog, tu passes en paramètres une ArrayList, ce qui n'est pas possible.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 201
    Par défaut
    Citation Envoyé par collaud_vb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    While Nbre_Rows <> 0
        Dim t As Decimal
        t = DataGridView1.Rows(Nbre_Rows - 1).Cells(3).Value
        Liste.Add(t)
    End While
    Pour moi, tu as une boucle infini
    Sans parler de l'appel de la méthode ShowDialog()

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    ça expliquerait pkoi j'dois aller killer le process dans le Task...

    j'dois avouer que je m'en doutais.... j'vous ai pas djà dit que j'étais un newb ?

    une idée ?

    ça, c'est peut-être déjà mieux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    While Nbre_Rows > 0
                Dim t As Decimal
                t = DataGridView1.Rows(Nbre_Rows).Cells(3).Value
                Liste.Add(t)
                Nbre_Rows = Nbre_Rows - 1
     
            End While
    ---edit---

    j'ai fais le debug pas à pas... mon Nbre_Rows a bien la valeur 3 !... comprends pas... pis pkoi ça serait infini...

    Tant que Nbre_Rows est plus grand que 0, etc...

    chais pas !

  7. #7
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Essaye le pas-à-pas.
    Dans VS.Net :
    - tu ajoute un break point dans ton code (tu tapes F9 sur la ligne "Liste.Add(t)")
    - tu lances l'appli en faisant F5
    - tu regarde les valeurs de chacunes de tes variables en déplacant le curseur de souris dessus (sans clicker)
    - tu tapes F5 pour l'itération suivante.

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

Discussions similaires

  1. [VB.net 2005]ComboBox.DataSource ignore l'ArrayList source
    Par Macintoc dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/08/2006, 19h31
  2. DX 9 et visual.net 2005 ?
    Par ilimo dans le forum DirectX
    Réponses: 1
    Dernier message: 27/07/2004, 10h55

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