vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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 - Ein- und Umsteiger
Re: 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

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Selbst gebastelter Explorer - Problem773CrystalixXx09.09.07 13:49
Re: Selbst gebastelter Explorer - Problem587LarsThorwald09.09.07 15:28

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