- Registriert
- Mai 2012
- Beiträge
- 918
Hallo,
aktuell arbeite ich an einem kleinen Planer. Bei dem ist es aktuell möglich, anhand vorhandener Dateien ein Item in einer Combobox hinzuzufügen.
Diese Dateien sind ".ini"-Dateien mit folgender, beispielhafter Struktur.
Der Name der Datei ist gleich des Wertes "Name" in der Datei. In diesem Falle hieße die Datei also "Test.ini".
In dieser Sub gehe ich jede Datei durch, öffne sie, und schreibe den Wert von "Name" in eine Liste. Mit dieser Liste wird dann die Combobox gefüllt.
Sobald ich auf ein Item in der Combobox geklickt habe, wird folgende Sub aufgerufen (der Text des angeklickten Items wird übergeben als "Name"). Dabei gehe ich jede Datei durch, öffne diese und lese den Wert "Name" aus. Ist dieser gleich mit dem String "Name", wird geprüft, ob es ein eine Website oder ein lokales Bild ist. Je nachdem, wird ein Webbrowser oder eine PictureBox erstellt, wobei der Pfad zur Website/Bild aus der .ini-Datei gelesen wird. Dann wird der Webbrowser/PictureBox dem Panel hinzugefügt.
Es funktioniert ganz gut, es stürzt nicht ab ober hängt sich irgendwie auf. Allerdings finde ich meinen Weg ein wenig Umständlich, kompliziert. Und das ist noch das "einfache", was später dynamisch anpassbar sein soll wird ein wenig aufwendiger.
Aus genau diesem Grund frage ich mich, ob das nicht irgendwie viel einfacher funktioniert?
P.S.:
Ich bin noch kein Profi was VB.net angeht, ich habe fast 4 Stunden für die paar Zeilen benötigt. Deswegen könnte das später noch länger dauern ^^
aktuell arbeite ich an einem kleinen Planer. Bei dem ist es aktuell möglich, anhand vorhandener Dateien ein Item in einer Combobox hinzuzufügen.
Diese Dateien sind ".ini"-Dateien mit folgender, beispielhafter Struktur.
Der Name der Datei ist gleich des Wertes "Name" in der Datei. In diesem Falle hieße die Datei also "Test.ini".
Code:
[Speiseplan]
Name=Test
istBild=True
istURL=False
Pfad=C:\Users\Lukas\Desktop\Test\Test.jpg
In dieser Sub gehe ich jede Datei durch, öffne sie, und schreibe den Wert von "Name" in eine Liste. Mit dieser Liste wird dann die Combobox gefüllt.
Code:
Private Sub ladeSpeisepläne(ByVal pfad As String)
ComboEigenerPlan.Items.Clear()
Dim ini As New INI
Dim lst As List(Of String) = Directory.GetFiles(pfad, "*.ini").ToList
For i As Integer = 0 To lst.Count - 1
ini.Pfad = lst.Item(i)
ComboEigenerPlan.Items.Add(ini.WertLesen("Speiseplan", "Name"))
Next
End Sub
Sobald ich auf ein Item in der Combobox geklickt habe, wird folgende Sub aufgerufen (der Text des angeklickten Items wird übergeben als "Name"). Dabei gehe ich jede Datei durch, öffne diese und lese den Wert "Name" aus. Ist dieser gleich mit dem String "Name", wird geprüft, ob es ein eine Website oder ein lokales Bild ist. Je nachdem, wird ein Webbrowser oder eine PictureBox erstellt, wobei der Pfad zur Website/Bild aus der .ini-Datei gelesen wird. Dann wird der Webbrowser/PictureBox dem Panel hinzugefügt.
Code:
Private Sub ladeDaten(ByVal Name As String)
Try
Dim ini As New INI
Dim di As New DirectoryInfo("C:\AFS-Software\Essensplaner\Speisepläne")
For Each file In di.GetFiles("*.ini")
ini.Pfad = file.FullName
If ini.WertLesen("Speiseplan", "Name") = Name Then
If ini.WertLesen("Speiseplan", "istUrl") = "True" Then
Dim browser As New WebBrowser
browser.Dock = DockStyle.Fill
browser.Url = New Uri(ini.WertLesen("Speiseplan", "Pfad"))
PanelControls.Controls.Clear()
PanelControls.Controls.Add(browser)
ElseIf ini.WertLesen("Speiseplan", "istBild") = "True" Then
Dim bild As New PictureBox
bild.Dock = DockStyle.Fill
bild.ImageLocation = ini.WertLesen("Speiseplan", "Pfad")
bild.SizeMode = PictureBoxSizeMode.Zoom
PanelControls.Controls.Clear()
PanelControls.Controls.Add(bild)
End If
Exit For
End If
Next
Catch ex As Exception
MessageBoxAdv.Show(ex.Message)
End Try
End Sub
Es funktioniert ganz gut, es stürzt nicht ab ober hängt sich irgendwie auf. Allerdings finde ich meinen Weg ein wenig Umständlich, kompliziert. Und das ist noch das "einfache", was später dynamisch anpassbar sein soll wird ein wenig aufwendiger.
Aus genau diesem Grund frage ich mich, ob das nicht irgendwie viel einfacher funktioniert?
P.S.:
Ich bin noch kein Profi was VB.net angeht, ich habe fast 4 Stunden für die paar Zeilen benötigt. Deswegen könnte das später noch länger dauern ^^