vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
OwnerDraw Treeview 
Autor: Manfred X
Datum: 27.05.14 16:03

Ich habe das Video nicht angeschaut, erkenne aber das Problem.
Beim Click auf den Button "btn" werden die gecheckten Nodes gelistet,
aber bei schneller Click-Wiederholung klappt beim Treeview die
Koordination zwischen der Anzeige des Node-Check und zurückgegebenen
Check-Eigenschaft des Node nicht.

Workaround: Eventuell die Knoten selbst zeichen
Public Class frmCheckedNodes
 
    Dim WithEvents trv As New TreeView With _
              {.Parent = Me, .Width = 200, .CheckBoxes = True, _
               .DrawMode = TreeViewDrawMode.OwnerDrawAll}
 
 
    Dim CheckedNodes As New List(Of String)
    Dim bs As New BindingSource With {.DataSource = CheckedNodes}
    Dim lbo As New ListBox With _
        {.Parent = Me, .Left = 210, .Top = 40, .DataSource = bs}
 
    Dim WithEvents btn As New Button With _
        {.Parent = Me, .Left = 210, .Text = "Checked Nodes"}
 
 
    Private Sub frmCheckedNodes_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        FillTree()
    End Sub
 
    Private Sub btn_Click(sender As Object, _
        e As System.EventArgs) Handles btn.Click
 
        CheckedNodes.Clear()
        ListCheckedNodes(trv, CheckedNodes)
        bs.ResetBindings(False)
    End Sub
 
 
    Private Sub HandleMouseDown(ByVal sender As Object, _
         ByVal e As MouseEventArgs) Handles trv.MouseDown
 
        Dim info As TreeViewHitTestInfo = trv.HitTest(e.X, e.Y)
        If (info IsNot Nothing) Then
            info.Node.Checked = Not info.Node.Checked
        End If
    End Sub
 
 
    Private Sub trv_DrawNode(sender As Object, _
        e As System.Windows.Forms.DrawTreeNodeEventArgs) Handles trv.DrawNode
 
        Dim f As Font = e.Node.NodeFont
        If f Is Nothing Then f = trv.Font
 
        Dim c As Color = Color.Black
        If e.Node.Checked Then c = Color.Red
        Using br As New SolidBrush(c)
            e.Graphics.DrawString(e.Node.Text, f, br, e.Node.Bounds.Location)
        End Using
 
    End Sub
 
 
    Private Sub FillTree()
        For i As Integer = 0 To 5
            Dim sn As TreeNode = trv.Nodes.Add(CStr(i), CStr(i))
            For k As Integer = 0 To 5
                sn.Nodes.Add(CStr(i) + CStr(k), CStr(i) & CStr(k))
            Next k
        Next i
    End Sub
 
 
    Private Sub ListCheckedNodes(ByVal trv As TreeView, _
        ByVal lst As List(Of String))
 
        For Each node As TreeNode In trv.Nodes
            If node.Checked Then
                lst.Add(node.FullPath)
            End If
 
            For Each sn As TreeNode In node.Nodes
                CheckedNodesRecursive(sn, lst)
            Next sn
        Next
    End Sub
 
 
    Private Sub CheckedNodesRecursive(ByVal tn As TreeNode, _
         ByVal lst As List(Of String))
 
        If tn.Checked Then
            lst.Add(tn.FullPath)
        End If
 
        For Each sn As TreeNode In tn.Nodes
            CheckedNodesRecursive(sn, lst)
        Next
    End Sub
 
 
End Class


Beitrag wurde zuletzt am 27.05.14 um 16:05:39 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
VB.net Treeview mit Checkboxes - Wie prüfe ich ob TopNode ge...3.215Jenpet26.05.14 16:56
Alles in Ordnung ????2.393Manfred X26.05.14 18:52
Re: VB.net Treeview mit Checkboxes - Wie prüfe ich ob TopNod...2.432Manfred X26.05.14 19:54
Re: VB.net Treeview mit Checkboxes - Wie prüfe ich ob TopNod...2.360Jenpet27.05.14 09:08
Re: VB.net Treeview mit Checkboxes - Wie prüfe ich ob TopNod...2.497Jenpet27.05.14 11:32
OwnerDraw Treeview2.625Manfred X27.05.14 16:03
Re: VB.net Treeview mit Checkboxes - Wie prüfe ich ob TopNod...2.364Jenpet28.05.14 09:15
Zeichenschule: CheckedTreeview2.444Manfred X28.05.14 11:05
Re: VB.net Treeview mit Checkboxes - Wie prüfe ich ob TopNod...2.380Jenpet28.05.14 15:29
Es geht voran ....2.451Manfred X28.05.14 15:42
Immer noch ....2.546Manfred X28.05.14 16:25
Re: VB.net Treeview mit Checkboxes - Wie prüfe ich ob TopNod...2.349Jenpet28.05.14 16:06

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel