| |

VB.NET - Ein- und UmsteigerRe: Selbst gebastelter Explorer - Problem | |  | Autor: LarsThorwald | Datum: 09.09.07 15:28 |
| Hi,
ich bin ebenfalls gerade dabei, mir ein Listview mit einer Explorerfunktionalität zu erstellen, da mein vorher erstelltes mittlerweile nicht mehr den Anforderungen genügt (Performanceprobleme )
Hier mal ein paar Tips am Rande:
1.Leite eine neue Klasse vom ListviewItem ab. Diese erweiters Du nun mit den erforderlichen Eigenschaften. Dh. z.B. Pfad, Name, Datum ect.
Beispiel:
Public Class clsLtv
Inherits ListViewItem
Public Enum DataType
Folder
File
End Enum
Private e_Typ As DataType
Private m_FullPath As String
Private m_Date As String
Private m_Filetyp As String
Private m_Extension As String
Private m_Name As String
Public Sub New(ByVal F As FileInfo)
e_Typ = DataType.File
m_FullPath = F.FullName
m_Name = F.Name
m_SizeasLong = F.Length
m_Date = F.LastWriteTime.ToShortDateString + " - " + _
F.LastWriteTime.ToLongTimeString
m_Extension = F.Extension
m_Filetyp = ReadTypFromRegistry(F.Extension)
End Sub
Public Sub New(ByVal D As DirectoryInfo)
e_Typ = DataType.Folder
m_FullPath = D.FullName
m_Name = D.Name
m_Date = D.LastWriteTime.ToShortDateString + " - " + _
D.LastWriteTime.ToLongTimeString
m_Extension = "-"
m_Filetyp = "Ordner"
End Sub
Public ReadOnly Property FileOrFolder() As DataType
....
Public Property Extension() As String
...
Public Property FullPath() As String
...
usw.
End Class 2. Speichere nach Möglichkeit kein FileInfoObject und DirectoryInfoObject in der neuen Klasse ab. Je mehr Objekte vorhanden sind, um so langsamer wird das ganze. Lese mal das Verzeichnis C:\Windows\System32 ein. Aufgrund der vielen Dateien im Verzeichnis merkst Du ganz schnell, ob dein Code zu langsam ist.
3. Benutze für die Iconermittlung die Methode Drawing.Icon.ExtractAssociatedIcon(Dateipfad)
Ich habe es bei mir wie folgt realisisiert:
In einer Imagelist habe ich ein Bild für den Ordner (Index o) hinzugefügt. Die Icons der Dateien werden dynamisch während des hinzufügens des ListViewItem in das Listview ermittelt und in der Imagelist über ein "Key" gespeichert. Das bedeutet: existiert bereits ein entsprechendes Icon in der Imagelist, so wird dieses verwendet, ansonsten wird ein neues ermittelt und der ImageList hinzugefügt. Bei vielen Dateien spart man damit ernorm viel Zeit! Ist eigentlich ganz simple. Hier ein Beispiel
'Existiert bereits ein Icon in der Imagelist?
Dim picindex As Int32
dim img a new ImageList
''---> F fungiert hier als Beispiel als ein FileInfoObject
'---> Datei hat keine Extension!
If F.Extension.ToUpper = "" Then
If img.Images.ContainsKey("-") = False Then
img.Images.Add("-", Drawing.Icon.ExtractAssociatedIcon(F.FullPath))
Else
picindex = img.Images.IndexOfKey(L.Extension.ToUpper)
End If
' '---> Datei hat eine Extension!
ElseIf F.Extension.ToUpper <> "" Then
If img.Images.ContainsKey(F.Extension.ToUpper) = False Then
img.Images.Add(F.Extension.ToUpper, _
Drawing.Icon.ExtractAssociatedIcon(L.FullPath))
picindex = img.Images.IndexOfKey(F.Extension.ToUpper)
Else
picindex = img.Images.IndexOfKey(F.Extension.ToUpper)
End If
End If
'Imageindex
Return picindex Oha, jetzt bin ich abgeschweift
Du kannst natürlich deine Daten, d.h dein FileInfoObject auch in den Tags der Listviewitems und den TreenodeItems speichern, und dieses dann aufrufen
Gruß
Lars
Visual Basic Express 2010, C# Express 2010
Intel? i7 Core 920@2.63 Ghz, 6 GByte DDR3, 1024 MB ATI? Radeon? 5870, Windows 7 Prof. 64 Bit
Gibson SG 61' Reissue ; Ibanez Prestige RG 2550 E, Marshall Valvestate VS100 + Modell Vs412 (4 x 12''), Cubase Studio |  |
 | 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 |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere Infos
|
|
|
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
|
|