none
ListView oder DataGridView die Groups Ein oder ausklappen RRS feed

  • Frage

  • Hallo

    Gibt es eine Möglichkeit die Groups in Listview einzuklappen oder wieder auszuklappen?

    Oder ist bei DataGridView möglich eine Groups zu erstellen die ein oder ausklappbar sind?

    Gruß

    Mattes

    Freitag, 26. Juli 2019 17:58

Alle Antworten

  • Hallo Mattes,

    Gibt es eine Möglichkeit die Groups in Listview einzuklappen oder wieder auszuklappen?

    Zu diesem Zweck kannst Du Dich der Struktur LVGROUP und der SendMessage-Funktion bedienen. Ein Beispiel ist in folgendem Link zu finden:
    Add Group Collapse Behaviour on a Listview Control

    Das Beispiel ist zwar in Visual C# verfasst, aber mit einem Konverter lässt sich der Code nach Visual Basic konvertieren. Nachfolgend steht eine aufs Wesentliche verkürzte Demo zur Verfügung und ich hoffe, dass sie und das oben verlinkte Beispiel hilfreich sein werden:

    Imports System.Runtime.InteropServices
    
    Partial Public Class Form1
        Inherits Form
    
        <StructLayout(LayoutKind.Sequential)>
        Public Structure LVGROUP
            Public cbSize As Integer
            Public mask As Integer
            <MarshalAs(UnmanagedType.LPTStr)>
            Public pszHeader As String
            Public cchHeader As Integer
            <MarshalAs(UnmanagedType.LPTStr)>
            Public pszFooter As String
            Public cchFooter As Integer
            Public iGroupId As Integer
            Public stateMask As Integer
            Public state As Integer
            Public uAlign As Integer
        End Structure
    
        <DllImport("user32.dll")>
        Private Shared Function SendMessage(ByVal window As IntPtr, ByVal message As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer
        End Function
    
        'ListView mit Elementen und Gruppen befüllen
    
        Private Sub bnEinklappen_Click(ByVal sender As Object, ByVal e As EventArgs) Handles bnEinklappen.Click
            For i As Integer = 0 To ListView1.Groups.Count
                Dim group As LVGROUP = New LVGROUP()
                group.cbSize = Marshal.SizeOf(group)
                group.state = 1 'eingeklappt
                group.mask = 4
                group.iGroupId = i
                Dim ip As IntPtr = IntPtr.Zero
    
                Try
                    ip = Marshal.AllocHGlobal(group.cbSize)
                    Marshal.StructureToPtr(group, ip, True)
                    SendMessage(ListView1.Handle, &H1000 + 147, i, ip)
                Catch ex As Exception
                    System.Diagnostics.Trace.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace)
                Finally
                    If ip <> IntPtr.Zero Then Marshal.FreeHGlobal(ip)
                End Try
            Next
        End Sub
    
        Private Sub bnAusklappen_Click(sender As Object, e As EventArgs) Handles bnAusklappen.Click
            For i As Integer = 0 To ListView1.Groups.Count
                Dim group As LVGROUP = New LVGROUP()
                group.cbSize = Marshal.SizeOf(group)
                group.state = 0 'ausgeklappt
                group.mask = 4
                group.iGroupId = i
                Dim ip As IntPtr = IntPtr.Zero
    
                Try
                    ip = Marshal.AllocHGlobal(group.cbSize)
                    Marshal.StructureToPtr(group, ip, True)
                    SendMessage(ListView1.Handle, &H1000 + 147, i, ip)
                Catch ex As Exception
                    System.Diagnostics.Trace.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace)
                Finally
                    If ip <> IntPtr.Zero Then Marshal.FreeHGlobal(ip)
                End Try
            Next
        End Sub
    
    End Class
    

    Oder ist bei DataGridView möglich eine Groups zu erstellen die ein oder ausklappbar sind?

    Sieh Dir diesen Thread und die weiterführenden Links an:
    VB Datagridview Grouping - Expand and Collapse Row(s). Help needed

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Montag, 29. Juli 2019 13:21
    Moderator
  • Hallo Mattes,

    Bist Du weitergekommen? Ist der Thread noch aktuell?

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 13. August 2019 14:00
    Moderator
  • Hallo

    Danke schon mal ich bin noch nicht dazu gekommen das zu Testen

    Werde es in die nächsten Tagen mal Testen

    Montag, 26. August 2019 13:43