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 :

selection dans listview


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut selection dans listview
    Bonjour,
    J'ai 2 listview
    La premiere va me chercher les fichiers d'un dossier et la seconde a la selection dans la listview1 affiche le contenu du fichier dans la listview2
    la premiere selection est bonne mais pas la deuxieme, une idée
    Message : System.ArgumentOutOfRangeException*: 'InvalidArgument=La valeur '0' n'est pas valide pour 'index'. Arg_ParamName_Name
    ArgumentOutOfRange_ActualValue'



    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
    Private Sub ltcommandebarre_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ltcommandebarre.SelectedIndexChanged
            Dim commandebarre As String
     
            listview2.Items.Clear()
     
            commandebarre = listview1.SelectedItems(0).Text
            Dim varcheminapprobarre As String
            varcheminapprobarre = "c:\test\" & commandebarre
     
     
     
            Dim lines() As String = File.ReadAllLines(varcheminapprobarre)
            listview2.Items.AddRange(lines)
     
     
        End Sub

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 968
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 968
    Par défaut
    Comme cela est précisé dans la documentation, l'événement ListView.SelectedIndexChanged se produit lorsque la collection SelectedIndices est modifiée..

    Extrait de la documentation :
    La SelectedIndices collection est modifiée chaque fois que la Selected propriété d’un est ListViewItem modifiée. La modification de propriété peut se produire par programme ou lorsque l’utilisateur sélectionne un élément ou efface la sélection d’un élément. Quand l’utilisateur sélectionne un élément sans appuyer sur CTRL pour effectuer une sélection multiple, le contrôle efface d’abord la sélection précédente.
    Donc
    Lorsque tu sélectionne un élément, il est ajouté à SelectedIndices et SelectedIndexChanged est déclenché.
    Lorsque tu sélectionne un autre élément, SelectedIndices est effacé et SelectedIndexChanged est déclenché, puis cet autre élément est ajouté à SelectedIndices et SelectedIndexChanged est redéclenché.

    Ton problème est là :
    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    commandebarre = listview1.SelectedItems(0).Text

    Lors de la seconde sélection, SelectedItems est d'abord vidée, cela déclenche l'événement et puisqu'il n'y rien à l'indice 0 (puisque SelectedItems est vidée), tu plantes.

  3. #3
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Merci mais normalement au prochain déclenchement je remplis avec:
    commandebarre = listview1.SelectedItems(0).Text
    Est ce qu'il faudrait faire un truc comme ça ? Je ne vois pas trop comment faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If ltcommandebarre.SelectedItems.Count <> 0 Then
    ltcommandebarre.SelectedItems(0).SubItems(1)
     
    end if

  4. #4
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Je ne vois pas trop comment faire svp

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 968
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 968
    Par défaut
    Il faut vérifier si listview1.SelectedItems contient des items avant de lire celui à l'index 0.

  6. #6
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Merci popo.
    Sur ma premiere selection c'est bon c'est sur ma deuxieme selection.
    listview1.SelectedItems il faut vider les items ? est ce le fait de selectionner un fichier et de le lire dans un listwiew lvcontenubarre ?


    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Private Sub ltcommandebarre_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ltcommandebarre.SelectedIndexChanged
            Dim commandebarre As String
     
            commandebarre = ltcommandebarre.SelectedItems(0).Text
     
            Dim varcheminapprobarre As String
                varcheminapprobarre = Form4.cheminapprobarre.Text & "\" & commandebarre
     
                Dim finligne As String = ";;"
                Dim separateur As String = ";"
     
                Try 'Au cas d'erreur
                    If IO.File.Exists(varcheminapprobarre) Then 'Si le fichier existe
     
                        Dim LesDonnéesbarre As String = IO.File.ReadAllText(varcheminapprobarre) 'Lire toute les données
                        Dim LesElementsbarre() As String = LesDonnéesbarre.Split(New String() {finligne}, StringSplitOptions.RemoveEmptyEntries) 'Séparer avec (;;)
     
                    For Each elementbarre As String In LesElementsbarre 'Pour chaque éléments dans LesElements()
     
     
                        If (elementbarre.Contains(separateur)) Then 'Si ça contient le séparateur (;)
     
                            Dim LesValeurs() As String = elementbarre.Split(New String() {separateur}, StringSplitOptions.None) 'Séparer avec (;)
     
                            Dim NouveauElement As New ListViewItem 'Nouveau élément a ajouter dans la ListView
     
                            For i As Integer = 0 To LesValeurs.Length - 1 'Pour chaque valeur dans  LesValeurs()
                                If i = 0 Then 'Si c'est la première valeur
                                    NouveauElement.Text = LesValeurs(i) 'Ajouter la valeur dans la première colonne.
                                Else 'Si non l'ajouter dans les autres colonnes
                                    NouveauElement.SubItems.Add(LesValeurs(i)) 'Si i = 1 donc c'est la deuxième colonne etc
                                End If
                            Next
                            lvcontenubarre.Items.Add(NouveauElement) 'Ajouter l'élément a la ListView
     
     
     
                        End If
                    Next
                End If
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Erreur")
                End Try
     
     
     
        End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/02/2008, 09h10
  2. selection dans une listview
    Par zmatz dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/06/2007, 22h01
  3. [C#]scroll jusqu'a selection dans listview?
    Par caccal dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/04/2007, 10h25
  4. Probleme de Selection dans un ListView
    Par bixi dans le forum Delphi
    Réponses: 1
    Dernier message: 04/06/2006, 00h40
  5. Selection dans une listview..
    Par remixtech dans le forum Composants VCL
    Réponses: 1
    Dernier message: 25/01/2006, 22h10

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