Ik ben sinds kort overgestapt van VB6 naar VB.Net (eindelijk) om nu eindelijk eens helemaal netjes OO te kunnen gaan werken. Nu ben ik bezig met het volgende:
Ik heb een treeview die nogal wat data bevat (uiteraard hiëarchische data). Om mijn database niet op z'n flikker te geven bij het bouwen van de (nogmaals: enorme) tree probeer ik deze "virtual" te maken. Dat wil zeggen dat ik alleen de root node maak en 1 "dummy childnode" geef zodat het "plusje" voor de rootnode verschijnt. Op het moment dat ik deze "uitklap" wordt er gekeken of er een "dummy node" onder zit (en dat is dus zo bij de eerste keer uitklappen) en in dat geval wordt het niveau gevuld dat uitgeklapt gaat worden. Dat geld dan vervolgens weer voor alle subniveaus; ze bevatten allemaal een dummy node, welke bij uitklappen wordt vervangen door de echte nodes.
Nu heb ik alles netjes werkend met mijn eigen "nodetype". Ik inherit van de TreeNode en geef deze een aantal eigen properties en methods (zoals een .sort method, zodat ik binnen een bepaalde node alle subnodes (en childnodes daar weer van...) kan sorteren).
Lang verhaal kort: Dat inheriten enzo is me wel duidelijk. Wat me niet duidelijk is, is hoe ik nu het "BeforeExpand" event kan "Inheriten" zodat ik dus, bij het klikken op het plusje, "effe snel" de node kan gaan vullen met de benodigde data voordat het aan de gebruiker wordt gepresenteerd.
Ik heb momenteel dus:
Hier wordt dus gekeken of de node reeds gevuld is met data of niet (.IsVirtual) en als dat niet het geval is (.IsVirtual = True) dan vul ik de node (.Fill). Het liefste zou ik echter gewoon dit event "inheriten" en in mijn eigen class dus vangen.
Ik heb dit nu in mijn eigen class:
Maar die Expand method wordt dus niet aangeroepen. Ik neem aan dat dat komt omdat ik nog iets van "Handles Treeview.BeforeExpand" ofzo achter moet, maar dat vreet 'ie dus niet.
Ik voel me weer zo ontzettend n00b...
Mijn vraag: Hoe vang ik nu in mijn eigen class, die Inherit van een TreeNode, een bepaald event zoals het BeforeExpand event? Uiteraard kon ik met Google (+Groups) en GoT search niets zinnigs vinden, anders stelde ik mijn vraag hier niet (en helaas ligt mijn enorme stapel VB.Net boeken zuhause)
Ik heb een treeview die nogal wat data bevat (uiteraard hiëarchische data). Om mijn database niet op z'n flikker te geven bij het bouwen van de (nogmaals: enorme) tree probeer ik deze "virtual" te maken. Dat wil zeggen dat ik alleen de root node maak en 1 "dummy childnode" geef zodat het "plusje" voor de rootnode verschijnt. Op het moment dat ik deze "uitklap" wordt er gekeken of er een "dummy node" onder zit (en dat is dus zo bij de eerste keer uitklappen) en in dat geval wordt het niveau gevuld dat uitgeklapt gaat worden. Dat geld dan vervolgens weer voor alle subniveaus; ze bevatten allemaal een dummy node, welke bij uitklappen wordt vervangen door de echte nodes.
Nu heb ik alles netjes werkend met mijn eigen "nodetype". Ik inherit van de TreeNode en geef deze een aantal eigen properties en methods (zoals een .sort method, zodat ik binnen een bepaalde node alle subnodes (en childnodes daar weer van...) kan sorteren).
Lang verhaal kort: Dat inheriten enzo is me wel duidelijk. Wat me niet duidelijk is, is hoe ik nu het "BeforeExpand" event kan "Inheriten" zodat ik dus, bij het klikken op het plusje, "effe snel" de node kan gaan vullen met de benodigde data voordat het aan de gebruiker wordt gepresenteerd.
Ik heb momenteel dus:
Visual Basic .NET:
1
2
3
| Private Sub TreeView1_BeforeExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeExpand If CType(e.Node, RDProductTreeNode).IsVirtual Then CType(e.Node, RDProductTreeNode).Fill() End Sub |
Hier wordt dus gekeken of de node reeds gevuld is met data of niet (.IsVirtual) en als dat niet het geval is (.IsVirtual = True) dan vul ik de node (.Fill). Het liefste zou ik echter gewoon dit event "inheriten" en in mijn eigen class dus vangen.
Ik heb dit nu in mijn eigen class:
Visual Basic .NET:
1
2
3
| Public Overloads Sub Expand() If Me.IsVirtual Then Me.Fill() End Sub |
Maar die Expand method wordt dus niet aangeroepen. Ik neem aan dat dat komt omdat ik nog iets van "Handles Treeview.BeforeExpand" ofzo achter moet, maar dat vreet 'ie dus niet.
Ik voel me weer zo ontzettend n00b...
Mijn vraag: Hoe vang ik nu in mijn eigen class, die Inherit van een TreeNode, een bepaald event zoals het BeforeExpand event? Uiteraard kon ik met Google (+Groups) en GoT search niets zinnigs vinden, anders stelde ik mijn vraag hier niet (en helaas ligt mijn enorme stapel VB.Net boeken zuhause)
[ Voor 18% gewijzigd door RobIII op 20-03-2006 15:24 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij