PropertyGrid et listview

Signaler
Messages postés
95
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
9 mai 2013
-
Messages postés
95
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
9 mai 2013
-
Bonjour à tous,
À partir d'une listView je voudrais pouvoir modifier ces éléments avec un propertyGrid.


Voilà un aperçus de ce que je voudrais faire:



Les colonnes de la listeView peuvent changer pendant le déroulement du programme donc le propertyGrid doit s'adapter.
Voici un début de code pour mon test:


Form1.vb
Public Class Form1

    Public list As New List(Of itemGeneral)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' #################### Chargement de la liste ####################

        Dim listColumns As String() = {"ID", "Name", "Type", "Data"}
        Dim listColumnsType As Integer() = {-1, -3, -1, -3}

        list.Clear()
        ListView1.Clear()
        For i As Integer = 0 To 3
            ListView1.Columns.Add(listColumns(i))
        Next

        Dim listItemValue As String() = {"15", "Chat", "1", "Le chat", "56", "Chient", "1", "Le chients", "80", "Maison", "2", "La maison", "3", "Personne", "3", "Une personne", "150", "Banquier", "3", "Un banquier"}
        For i As Integer = 0 To 5
            Dim newItemGeneral As New itemGeneral(8)
            Dim newListViewItem As ListViewItem = Nothing
            For j As Integer = 0 To 3
                Dim newItem As New item(listColumnsType(j), listItemValue((i * 4) + j))
                If newListViewItem Is Nothing Then newListViewItem = New ListViewItem(newItem.Value) Else newListViewItem.SubItems.Add(newItem.Value)
                newItemGeneral.Values.Add(newItem)
            Next
            ListView1.Items.Add(newListViewItem)
            list.Add(newItemGeneral)
        Next
    End Sub

    Private Sub ListView1_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
        ' #################### Élément sélectionné ####################
        If ListView1.SelectedIndices.Count < 1 Then Exit Sub
        Dim SelectedItemGeneral As itemGeneral = list(ListView1.SelectedIndices(0))
    End Sub
End Class

ItemGeneral.vb 'Correspond aux données de la ligne (ListViewItem)
Public Class itemGeneral
    Private _IsKey As Boolean = True
    Private _key As Integer 'Clé de l'élément (pas d'importance dans mon exemple)
    Public Values As New List(Of item) 'Liste des valeurs (correspond au ListViewItem)

    Public Sub New()
        _IsKey = False
    End Sub

    Public Sub New(ByVal m_key As Integer)
        _key = m_key
    End Sub

    Public ReadOnly Property IsKey() As Boolean
        Get
            Return _IsKey
        End Get
    End Property

    Public Property Key() As String
        Get
            Return _key
        End Get
        Set(ByVal value As String)
            _key = value
        End Set
    End Property
End Class

Item.vb 'Correspond aux valeurs de la ligne (ListViewSubItem)
Imports System.ComponentModel

Public Class item
    Public _Type As Integer 'Type de valeur (integer, String, Double, Boolean, etc...)
    Public _Value As String 'Valeur

    Public Property Value() As String
        Get
            Return _Value
        End Get
        Set(ByVal value As String)
            _Value = value
        End Set
    End Property

    Public Sub New(ByVal Type As Integer, ByVal Value As String)
        _Type = Type
        _Value = Value
    End Sub
End Class


Maintenant comment obtenir le même résultat que mon screenshot ?
Merci par avance


Julien

1 réponse

Messages postés
95
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
9 mai 2013

Mon problème est résolut.
Voici les sources de mon exemple pour aider les autres:
[http://up.sur-la-toile.com/i19Nx [VB.NET] PropertyGrid - Exemple]

Bonne soirée à tous

Julien