In VB.NET 2003 (also .NET Framework 1.1) kann die erste Spalte eines ListView-Elements **nicht** über `SubItems(0)` adressiert werden. Die erste Spalte (also der Haupttext eines ListViewItems) wi... [mehr]
Um in VB.NET 2003 in einer `ListView` die Icons versteckter Dateien halbtransparent (wie im Windows Explorer) darzustellen, sind mehrere Schritte nötig, da die Standard-ListView-Steuerung dies nicht direkt unterstützt. Die halbtransparente Darstellung (Alpha-Blending) muss manuell umgesetzt werden. **Vorgehensweise:** 1. **Dateiattribute prüfen:** Überprüfe, ob eine Datei das Attribut "Hidden" (`FileAttributes.Hidden`) besitzt. 2. **Icon extrahieren:** Hole das Standard-Icon der Datei (z.B. mit `SHGetFileInfo` aus der Windows-API). 3. **Icon halbtransparent machen:** Wandle das Icon in ein Bitmap um und setze die Transparenz (Alpha-Wert) auf z.B. 128 (halbtransparent). 4. **ImageList befüllen:** Füge das (ggf. modifizierte) Icon in die ImageList ein, die der ListView zugewiesen ist. **Beispielcode (stark vereinfacht):** ```vb.net Imports System.IO Imports System.Drawing Imports System.Drawing.Imaging Imports System.Runtime.InteropServices ' API für Icon holen <DllImport("shell32.dll")> _ Private Shared Function SHGetFileInfo( _ ByVal pszPath As String, _ ByVal dwFileAttributes As Integer, _ ByRef psfi As SHFILEINFO, _ ByVal cbFileInfo As Integer, _ ByVal uFlags As Integer) As IntPtr End Function Private Const SHGFI_ICON = &H100 Private Const SHGFI_SMALLICON = &H1 <StructLayout(LayoutKind.Sequential)> _ Private Structure SHFILEINFO Public hIcon As IntPtr Public iIcon As Integer Public dwAttributes As Integer <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szDisplayName As String <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> Public szTypeName As String End Structure ' Icon extrahieren Private Function GetFileIcon(ByVal filePath As String) As Icon Dim shinfo As New SHFILEINFO() SHGetFileInfo(filePath, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON) Return Icon.FromHandle(shinfo.hIcon) End Function ' Icon halbtransparent machen Private Function MakeIconSemiTransparent(ByVal icon As Icon) As Bitmap Dim bmp As New Bitmap(icon.Width, icon.Height) Using g As Graphics = Graphics.FromImage(bmp) g.DrawIcon(icon, 0, 0) End Using Dim rect As New Rectangle(0, 0, bmp.Width, bmp.Height) Dim data As BitmapData = bmp.LockBits(rect, ImageLockMode.ReadWrite, bmp.PixelFormat) Dim bytesPerPixel As Integer = Image.GetPixelFormatSize(bmp.PixelFormat) \ 8 Dim ptr As IntPtr = data.Scan0 Dim numBytes As Integer = Math.Abs(data.Stride) * bmp.Height Dim rgbValues(numBytes - 1) As Byte Marshal.Copy(ptr, rgbValues, 0, numBytes) For i As Integer = 0 To rgbValues.Length - 1 Step bytesPerPixel If bytesPerPixel >= 4 Then rgbValues(i + 3) = CByte(rgbValues(i + 3) \ 2) ' Alpha halbieren End If Next Marshal.Copy(rgbValues, 0, ptr, numBytes) bmp.UnlockBits(data) Return bmp End Function ' Anwendung auf ListView Private Sub AddFileToListView(ByVal filePath As String, ByVal lv As ListView, ByVal imgList As ImageList) Dim fi As New FileInfo(filePath) Dim icon As Icon = GetFileIcon(filePath) Dim bmp As Bitmap If (fi.Attributes And FileAttributes.Hidden) = FileAttributes.Hidden Then bmp = MakeIconSemiTransparent(icon) Else bmp = icon.ToBitmap() End If imgList.Images.Add(filePath, bmp) Dim lvi As New ListViewItem(fi.Name) lvi.ImageKey = filePath lv.Items.Add(lvi) End Sub ``` **Hinweise:** - Die halbtransparente Darstellung funktioniert nur, wenn die ImageList auf `ColorDepth` 32 Bit steht. - Die Windows-ListView unterstützt keine echte Alpha-Transparenz unter Windows XP/2003, aber mit Bitmaps mit Alpha-Kanal kann man einen ähnlichen Effekt erzielen. - Für viele Dateien kann das Extrahieren und Bearbeiten der Icons langsam
In VB.NET 2003 (also .NET Framework 1.1) kann die erste Spalte eines ListView-Elements **nicht** über `SubItems(0)` adressiert werden. Die erste Spalte (also der Haupttext eines ListViewItems) wi... [mehr]
In VB.NET 2003 ist die ListView-Komponente standardmäßig nur für die Sortierung nach einer einzelnen Spalte ausgelegt. Eine mehrstufige (also z.B. erst nach Spalte 1, dann nach Spalte... [mehr]
In VB.NET 2003 (also .NET Framework 1.1) gibt es beim `ListView`-Steuerelement einige Einschränkungen im Vergleich zu späteren Versionen. Das Problem, dass nach dem Sortieren die Änderu... [mehr]
Um in VB.NET 2003 eine `ListView` mit dem Namen und dem vollständigen Pfad (FullName) der über einen `OpenFileDialog` (mit `Multiselect = True`) ausgewählten Dateien zu füllen, kan... [mehr]
Um in VB.NET 2003 die Einträge eines `ListView` nach Datum oder Größe zu sortieren, musst du einen benutzerdefinierten Sortierer implementieren, da die Standard-Sortierung nur nach Tex... [mehr]
Die Eigenschaft `UseItemStyleForSubItems` ist Teil des `ListViewItem`-Objekts in Windows Forms (WinForms) in VB.NET. Sie steuert, ob die Unterelemente (SubItems) eines ListView-Elements (`ListViewItem... [mehr]
In VB.NET 2003 (also .NET Framework 1.1) ist es leider nicht direkt möglich, die `ForeColor` (Textfarbe) einzelner SubItems in einem `ListView`-Steuerelement zu ändern. Die Standard-ListView... [mehr]
In VB.NET 2003 (also .NET Framework 1.1) gibt es leider keine direkte Möglichkeit, die Farbe der ausgewählten Elemente (`SelectedItems`) eines `ListView`-Steuerelements im Detail- oder Repor... [mehr]
Ja, mit VB.NET 2003 kannst du Vorschaubilder (Thumbnails) für die Miniaturansicht eines ListView zeitsparend erstellen. Dazu nutzt du die Klassen aus dem Namespace `System.Drawing`. Hier ein grun... [mehr]
In VB.NET 2003 ist das Gegenteil von `Path.Combine(...)` das Zerlegen eines zusammengesetzten Dateipfads in seine Einzelteile (Verzeichnisse und Dateiname). Während `Path.Combine` mehrere Teile z... [mehr]