Items.Add
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.
-
-
-
-
Frage:
Windoof Vista schrieb:
Das sind aber mehrere Dateiensquisheemixxa schrieb:
weil du pro item einen string übegeben musst
quasi for each datei in path
listview.items.add(datei)
next
LG
PS: Andere Möglichkeit: Du bekommst ja ein Array mit GetFiles, die Funktion Add() kann aber nur einen einzelnen String aufnehmen. Nutze die Funktion AddRange() ! (Diese nimmt ein Array an) -
-
hi windoof vista
das geht bestimmt auch 'smarter' aber ich würds so machen:
VB.NET-Quellcode
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- start:
- Try
- Dim file As String
- Dim count As Integer
- file = My.Computer.FileSystem.GetFiles("E:\Lokalradio\Verpackungen\Unterleger\").Item(count)
- count = count + 1
- ListBox1.Items.Add(file)
- GoTo start
- Catch ex As Exception
- MsgBox("Die Suche ist beendet!", MsgBoxStyle.Information, "100%")
- End Try
- End Sub
LG -
bitte rede ihm nicht auch noch so einen schrecklichen uralt-käsecode ein! wenn schon c&p posten, dann ordentlichen, sodass sich die leute nicht auch noch solche unarten angewöhnen!
zur schadensbegrenzung:
oder noch eleganter:
-
-
-
Ja, aber das Forum ist gewissermaßen eine Lehrveranstaltung.
In der es neben "es irgendwie ans laufen bringen" ganz wesentlich um Programmierstil geht.
Also wer Code in schlechtem Stil empfiehlt ist gewissermaßen ein Anfängerverderber.
Schon schneller als mittelfristig ist mit schlechten Stilproben einem Anfänger eher geschadet als genützt. -
squisheemixxa schrieb:
hingegen geht -
von ListView rate ich eh ab.
Datagridview ist exorbitant leistungsfähiger, während ListView gradezu dazu zwingt, Datenhaltung und Präsentation zu durchmischen. -
Ich mach dies immer so:
VB.NET-Quellcode
- Dim list As List(Of String) = Nothing
- Private Sub add_file_to_listbox()
- ListBox1.Items.Clear()
- list = GetFileList("E:\Sticksim\", True) '(Pfad als string, true/false ob unterordner einbezogen werden sollen)
- ListBox1.Items.AddRange(list.ToArray)
- End Sub
- Public Shared Function GetFileList(ByVal Root As String, Optional ByVal SubFolders As Boolean = True) As List(Of String)
- Dim FileList As New List(Of String)
- SeekFiles(Root, FileList, SubFolders)
- Return FileList
- End Function
- Private Shared Sub SeekFiles(ByVal Root As String, ByRef FileArray As List(Of String), ByVal SubFolders As Boolean)
- Try
- Dim Files() As String = System.IO.Directory.GetFiles(Root)
- Dim Folders() As String = System.IO.Directory.GetDirectories(Root)
- For i As Integer = 0 To UBound(Files)
- FileArray.Add(Files(i).ToString)
- Next
- If SubFolders = True Then
- For i As Integer = 0 To UBound(Folders)
- SeekFiles(Folders(i), FileArray, SubFolders)
- Next
- End If
- Catch Ex As Exception
- End Try
- End Sub
-
paar Verbesserungen:
VB.NET-Quellcode
- Private Sub add_file_to_listbox(ByVal lb As ListBox)
- Dim list As New List(Of String)
- SeekFiles("E:\Sticksim\", list, True)
- lb.DataSource = list
- End Sub
- Private Shared Sub SeekFiles(ByVal Root As String, ByVal fileCollector As List(Of String), _
- ByVal SubFolders As Boolean)
- Try
- fileCollector.AddRange(System.IO.Directory.GetFiles(Root))
- If Not SubFolders Then Return
- For Each child In System.IO.Directory.GetDirectories(Root)
- SeekFiles(child, fileCollector, SubFolders)
- Next
- Catch Ex As UnauthorizedAccessException
- 'nur UnauthorizedAccessException ignorieren - alle anderen müssen fliegen dürfen
- End Try
- End Sub
Insbesondere ein uneingeschränkter TryCatch implementiert gewissermaßen die Strategie, Gefahren dadurch zu begegnen, dass man ganz fest die Augen davor verschließt -
ErfinderDesRades schrieb:
Catch Ex As UnauthorizedAccessException 'nur UnauthorizedAccessException ignorieren - alle anderen müssen fliegen dürfen End Try
klär mich auf...
Catch Ex As UnauthorizedAccessException kenn ich noch noch nicht! -
gugge doch selbst nach, im ObjectBrowser.
Aber ich denke, der Aufklärungsbedarf besteht beim TryCatch.
Weil ein Catch Ex As Exception fängt jede Exception und setzt also die gesamte Fehlerverfolgung ausser Kraft - wie gesagt: das ist wie sich die Augen zuhalten, wenn die Klingonen angreifen.
Schlicht NoGo.
gugge auch AvoidTryCatch -
es sei noch gesagt das exception wenn es als letztes genutzt wird alle fehler die nicht behandelt einsammelt.
VB.NET-Quellcode
- Try
- 'mache die normale arbeit
- Catch ex As AccessViolationException
- MsgBox("AccessViolationException", MsgBoxStyle.Critical, "~ ahhhh") ' die anderen ex genauso z.b.
- Catch ex As AggregateException
- Catch ex As AppDomainUnloadedException
- Catch ex As ArgumentException
- Catch ex As DivideByZeroException
- Catch ex As FormatException
- Catch ex As InvalidCastException
- Catch ex As IO.DirectoryNotFoundException
- Catch ex As IO.FileNotFoundException
- Catch ex As MemberAccessException
- ' hier kann man viele reinschreiben *G ( http://msdn.microsoft.com/de-de/library/system.exception.aspx ganz unten )
- Catch ex As Exception ' schnappt sich alle fehler die bisher nicht gecatched wurden
- MsgBox("ich bin nur zu sehen wenn es keine andere möglichkeit gibt", MsgBoxStyle.Critical, "~ ahhhh")
- End Try
hier nochmal der link aus dem code
msdn.microsoft.com/de-de/library/system.exception.aspx
---
dann gibt es noch was feines : Finally
[VB.NET] wofür is finally?
---
was ich ( vielleicht wegen der uhrzeitnicht verstehe ist der unterschied zwischen finally und dem schreiben nach dem endtry
vs
-
auch du gugge AvoidTryCatch.
Catch Ex As Exception ist NoGo.
Eine beliebige Exception kann nicht behandelt werden, und deshalb darf man sie nicht fangen. Denn sie zu fangen führt dazu, dass das Prog weiterläuft, eindeutig in einem undefinierten Zustand.
Auch eine Messagebox im Catch-Abschnitt ist NoGo. Das ist keine Fehlerbehandlung. Eine Messagebox kriegst du auch, wenn du den TryCatch weglässt, und zwar eine viel bessere, als du programmieren kannst. Fürs Debuggen isses ja einfach dumm, sich die FehlerVerfolgung der IDE selbst wegzucatchen.
Eine Fehlerbehandlung muß genau das Problem lösen, welches aufgetreten ist, ansonsten darf das Prog nicht weiter laufen.
Daher ist Fehlerbehandlung etwas äußerst individuelles, und nur auf höchster Ebene überhaupt umsetzbar, denn mal erfordert die Fehlerbehebung eine Interaktion mit dem User, mal müssen mehr oder weniger umfangreiche Programm-Segmente deaktiviert werden, und mal haste vlt. tatsächlich einen Cache programmiert, wode die Daten hinspeicherst, und per Automat wird das dann später an den Server geschickt, wenn die Verbindung wieder möglich ist.
Aber solange du diesen fabelhaft intelligenten Cache nicht hast - darfst du kein TryCatch hinschreiben.
-
Ähnliche Themen
-
Daniel_0815 - - Sonstige Problemstellungen
-
Zweistein97 - - Sonstige Problemstellungen
-
5 Benutzer haben hier geschrieben
- Gast (8)
- ErfinderDesRades (5)
- haiyyu (2)
- DiePod (2)
- MB-Tech (1)