Benutzer mit den meisten Antworten
ListView Datei Anzeigen

Frage
-
Hallo zusammen,
Versuche aus einen ordner alle text dateien in listview anzeigen zu lassen,
es git nur zwei unterschiedliche text dateien ,
in diese soll die erste zeile ausgelesen werden aber erst nach 80 leerzeichen , klappt soweit .wenn aber eine text datei die schon bei Substring(0) was drin steht dann kommt es zu einer Fehlermeldung
wie kann ich gleichzeitig substring(80) und substring (0) einsetzten
ListView1.MultiSelect = False ListView1.View = View.Details ListView1.FullRowSelect = True ListView1.Items.Clear() ListView1.Columns.Clear() ListView1.Columns.Add("VollerDateiname", 0, HorizontalAlignment.Left) ListView1.Columns.Add("TNr.", 120, HorizontalAlignment.Left) ListView1.Columns.Add("PROGRAMMNAME.", 450, HorizontalAlignment.Left) ListView1.Columns.Add("Grösse", 80, HorizontalAlignment.Center) ListView1.Columns.Add("GEAEND. AM", 170, HorizontalAlignment.Center) ListView1.Columns.Add("ERSTELL. AM", -2, HorizontalAlignment.Center) If Not IO.Directory.Exists("C:\Test\") Then Dim dFolder As DirectoryInfo = New DirectoryInfo("C:\Test\") Dim fFile As FileInfo Dim Zeile1 As String Dim Prog As String For Each fFile In dFolder.GetFiles("*.*") With fFile Using fileReader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(.FullName, System.Text.Encoding.Default) Zeile1 = fileReader.ReadLine().TrimStart(" ") End Using Prog = Zeile1.Substring(80) ListView1.Items.Add(New ListViewItem(New String() {.Name, .Name, Prog, (.Length / 1000).ToString("#0 KB "), .CreationTime.ToString, .LastWriteTime.ToString})) End With Next Return Else MsgBox("Daten nicht Vorhanden!", MsgBoxStyle.Critical, "Fehler") End If
- Verschoben Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 3. Januar 2017 07:01 Aus: Generelle Fragen zu MSDN Online Deutschland oder den MSDN Foren
Antworten
-
Hallo,
poste bitte immer die exakte Fehlermeldung mit, denn sonst können wir eigentlich auch nur raten oder es selbst ausprobieren.
Wenn ich jetzt mal rate, würde ich sagen, dass es daran scheitert dass Substring den Start-Index innerhalb des Strings erwartet. Außerdem weißt du nicht mit Sicherheit wie viele Leerzeichen am Anfang der Datei stehen.
An deiner Stelle würde ich die Leerzeichen am Anfang mittels TrimStart weg machen, denn dann sind die Leerzeichen alle weg. Allerdings rufst du das ja selbst schon auf, was so gesehen keinen Sinn macht.
Ohne weitere Information würde ich sagen, dass du das suchst:
With fFile Using fileReader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(.FullName, System.Text.Encoding.Default) Zeile1 = fileReader.ReadLine().TrimStart(" "c) End Using Prog = Zeile1 ListView1.Items.Add(New ListViewItem(New String() {.Name, .Name, Prog, (.Length / 1000).ToString("#0 KB "), .CreationTime.ToString, .LastWriteTime.ToString})) End With
Also ohne einem Substring aufruf, da bereits ein TrimStart enthalten ist.
BTW, wenn du TrimStart nichts übergibst, dann wird jedes Zeichen entfernt, das bei Char.IsWhitespace true zurück gibt. Also ggf. auch Zeilenumbrüche usw., zusätzlich zum normalen Leerzeichen.
PS: Du solltest Option Strict On schalten.
Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Bearbeitet Tom Lambert (Koopakiller)Moderator Sonntag, 1. Januar 2017 10:56
- Als Antwort markiert XAndre78X Montag, 2. Januar 2017 15:17
Alle Antworten
-
Hallo,
poste bitte immer die exakte Fehlermeldung mit, denn sonst können wir eigentlich auch nur raten oder es selbst ausprobieren.
Wenn ich jetzt mal rate, würde ich sagen, dass es daran scheitert dass Substring den Start-Index innerhalb des Strings erwartet. Außerdem weißt du nicht mit Sicherheit wie viele Leerzeichen am Anfang der Datei stehen.
An deiner Stelle würde ich die Leerzeichen am Anfang mittels TrimStart weg machen, denn dann sind die Leerzeichen alle weg. Allerdings rufst du das ja selbst schon auf, was so gesehen keinen Sinn macht.
Ohne weitere Information würde ich sagen, dass du das suchst:
With fFile Using fileReader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(.FullName, System.Text.Encoding.Default) Zeile1 = fileReader.ReadLine().TrimStart(" "c) End Using Prog = Zeile1 ListView1.Items.Add(New ListViewItem(New String() {.Name, .Name, Prog, (.Length / 1000).ToString("#0 KB "), .CreationTime.ToString, .LastWriteTime.ToString})) End With
Also ohne einem Substring aufruf, da bereits ein TrimStart enthalten ist.
BTW, wenn du TrimStart nichts übergibst, dann wird jedes Zeichen entfernt, das bei Char.IsWhitespace true zurück gibt. Also ggf. auch Zeilenumbrüche usw., zusätzlich zum normalen Leerzeichen.
PS: Du solltest Option Strict On schalten.
Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Bearbeitet Tom Lambert (Koopakiller)Moderator Sonntag, 1. Januar 2017 10:56
- Als Antwort markiert XAndre78X Montag, 2. Januar 2017 15:17
-
Erstmal Frohes Neus 2017.....!!
Vielen Dank für die Antwort....hat gekplappt....!
jetzt würde ich gerne für diese zwei unterschiedliche dateien ein image zuweisen.
die dateien haben eine endung mit "test.eia" und "test.prg", diese sollen in eine listview zugewiesn werden.
für .eia ein image und für .prg auch sein eigenen image, habe das so gemacht, leider ohne erfolg
Private Sub ListView1_DrawColumnHeader(sender As Object, e As DrawListViewColumnHeaderEventArgs) Handles ListView1.DrawColumnHeader e.DrawDefault = True End Sub Private Sub ListView1_DrawSubItem(sender As Object, e As DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem Using txtbrsh As New SolidBrush(e.SubItem.ForeColor) If ListView1.SelectedIndices.Contains(e.ItemIndex) And ListView1.Focused Then e.Graphics.FillRectangle(New SolidBrush(Color.FromKnownColor(KnownColor.Highlight)), e.Bounds) txtbrsh.Color = Color.White End If If e.Item.SubItems(1) Is e.SubItem Then e.DrawDefault = False Using sf As New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Center, .FormatFlags = StringFormatFlags.NoWrap, .Trimming = StringTrimming.EllipsisCharacter} If e.SubItem.Text = "TNr." Then e.Graphics.DrawImage(ImgList1.Images(0), e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height) End If Dim rb As New Rectangle(e.Bounds.X + e.Bounds.Height, e.Bounds.Y, e.Bounds.Width - e.Bounds.Height, e.Bounds.Height) e.Graphics.DrawString(e.SubItem.Text, e.SubItem.Font, txtbrsh, rb, sf) End Using Else e.DrawDefault = True End If End Using If e.ColumnIndex = 1 Then If e.SubItem.Text = ".eia" Then Dim im As Image = My.Resources.index_1 Dim location As Point = Me.ListView1.Items(e.ItemIndex).SubItems(e.ColumnIndex).Bounds.Location e.Graphics.DrawImage(im, location) e.DrawFocusRectangle(Me.ListView1.Items(e.ItemIndex).SubItems(e.ColumnIndex).Bounds) Elseif e.SubItem.Text = ".prg" Then Dim im As Image = My.Resources.index_2 Dim location As Point = Me.ListView1.Items(e.ItemIndex).SubItems(e.ColumnIndex).Bounds.Location e.Graphics.DrawImage(im, location) e.DrawFocusRectangle(Me.ListView1.Items(e.ItemIndex).SubItems(e.ColumnIndex).Bounds) End If End If End Sub
-
Hallo,
stelle dafür am besten eine neue Frage, da sie relativ wenig mit der alten zu tun hat und Threads vergleichsweise schnell sehr lang und unübersichtlich werden können.
Auch noch erklären solltest du, was eia und prg für Dateitypen sind. Zumindest mir sagen sie nichts und .NET wird damit vielleicht nichts anfangen können.
Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub