vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Fortgeschrittene
TreeView zusatz Tag 
Autor: dj.tommy
Datum: 03.09.19 12:24

Hallo Leute!
Ich stehe vor einem Problem und weiß nicht wie ich das vernünftig lösen kann.
Im TreeView ist der Tag Property schon mit Pfad belegt.
Ich bräuchte noch ein Zusatz String für andere Info zu Speichern.
Habt hier eine gute Lösung für mich?

Ich dachte schon an Splitten, aber ich will nicht das irgendwann Konflikte auftauchen, wenn mal ein Zeichen vorhanden ist, das als Split verwendet wird.

Danke im Voraus.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView zusatz Tag 
Autor: oskar__01
Datum: 03.09.19 14:53

Hallo,

leite doch eine neue Klasse vom TreeView ab und gib ihr eine zusätzliche Variable deines gewünschten Typs,
die Du dann benutzen kannst.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView zusatz Tag 
Autor: dj.tommy
Datum: 03.09.19 15:52

Hallo Oskar!
Auf die Idee bin ich auch schon gekommen, da ich im Hinterkopf gewusst habe das z.B: Listbox kein Tag hat, das man mittels kleine Klasse eine einbetten kann.
Ich weiß nur das es eine Deklaration mit 3 oder 4 Zeilen waren und das es irgendwie ein Hacken oder Manipulation war.
Leider weiß ich es nicht, wie das war.
Und im Internet finde ich es irgendwie nicht.
Würdest du mir ein Hinweis geben wie das Funktioniert?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView zusatz Tag 
Autor: HenryV
Datum: 04.09.19 10:13

Vorgehensweise: Hinzufügen von benutzerdefinierten Daten zu einem TreeView- oder ListView-Steuerelement (Windows Forms)
oder
Da der .Tag ein Objekt ist, kannst du darin alles speichern. (Arrays, Strukturen, Klassen)
Hier das Beispiel mit einer Struktur
Structure TreeNodeTag
    Public FilePath As String
    Public Info As String
End Structure
Befüllen:
TreeView1.Nodes(0).Nodes.Add(New TreeNode("Project 2") With {.Tag = New _
  TreeNodeTag With {.FilePath = "Project 1", .Info = "Test2"}})
Lesen:
lb_Tag.Text = CType(e.Node.Tag, TreeNodeTag).FilePath
lb_Tag2.Text = CType(e.Node.Tag, TreeNodeTag).Info
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView zusatz Tag 
Autor: dj.tommy
Datum: 04.09.19 15:08

Hallo HenryV!
Herzlichen Danke mit deinem Tipp komm ich weiter
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView zusatz Tag 
Autor: Manfred X
Datum: 05.09.19 08:15

Hallo!

Die Tag-Eigenschaft ist nicht typsicher, weil ihr jedes beliebige Objekt
zugewiesen werden kann. Durch Verwendung dieser Eigenschaft entsteht
fehleranfälliger Code.

Erstelle statt dessen eine neuen Klasse "TreeviewEx", die vom Treeview-Control abgeleitet
ist und deklariere dort die benötigten Eigenschaften. Übersetze das Projekt neu!
Danach kannst Du TreeviewEx-Instanzen aus der Toolbox auf ein Formular ziehen und
die Eigenschaften werden im Fenster sichtbar bzw. können im Code gesetzt werden.

Imports System.ComponentModel
 
Public Class TreeviewEx
    Inherits System.Windows.Forms.TreeView
 
 
    <Browsable(True), Description("Pfadangabe")> 
    Public Property FilePath As String
 
    <Browsable(True), Description("Zusatzinformationen")> 
    Public Property Info As String
 
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView zusatz Tag 
Autor: dj.tommy
Datum: 05.09.19 12:51

Hallo Manfred X!
Ich glaube so war es danke dir!!
ich habe es gleich ausprobiert, wie du es mir geschrieben hast.
wenn ich Treewview1.Info gebe find er es
gebe ich aber so
Dim Tv as TreeNode
Tv.Info
Oder
TreeView1.SelectedNode.Info
Find er es nicht es nicht

Entwerder habe ich was falsch gemacht oder
Falsch ausgedrück, was ich will
Es ist leider nicht dort wo ich es brauche.

Kannst du mir vielleicht sagen, wo da der hund begraben liegt?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView zusatz Tag 
Autor: Manfred X
Datum: 05.09.19 23:14

Das TreeView ist ein Control, der Treenode ist ein Knoten.
Wenn Du eine Eigenschaft zu den Knoten hinzufügen willst,
mußt Du von TreeNode eine Klasse ableiten.

Public Class TreenodeEx
    Inherits System.Windows.Forms.TreeNode
 
    Public Property Filepath As String = ""
    Public Property Info As String = ""
 
End Class
Statt Instanzen von Treenode mußt Du dann überall TreenodeEx verwenden.

Also z.B. so ....
Dim trv As New TreeView
 
trv.Nodes.Add(New TreenodeEx With 
     {.Name = "Node 0", .Text = "Node 0", .Info = "was auch immer"})
 
Dim tn As New TreenodeEx With 
     {.Name = "Subnode 0", .Text = "Subnode 0", .Info = "irgendetwas}"}
 
trv.Nodes.Item(0).Nodes.Add(tn)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: TreeView zusatz Tag 
Autor: dj.tommy
Datum: 06.09.19 09:49

Hallo Manfred X!
Verstehe danke dir für deine Hilfe.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ergänzender Hinweis: Casting 
Autor: Manfred X
Datum: 06.09.19 10:50

Um an die zusätzlichen Properties eines Knoten heranzukommen,
der in einer Nodes-Auflistung enthalten ist, wird ein Cast benötigt.
Dim tn_ex As TreenodeEx = DirectCast(trv.Nodes(0), TreenodeEx)
Alternativ gibt es auch die TryCast-Methode, die beim Scheitern keine
Ausnahme auslöst. sondern Nothing zurückgibt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Ergänzender Hinweis: Casting 
Autor: dj.tommy
Datum: 06.09.19 10:58

Ah sehr gut danke für die Info
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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