117553
Goto Top

Windows Form Dateien aus Ordner auflisten "dir" und per button öffnen

Hallo zusammen,

bräuchte kurz Hilfe

eigentlich wahrscheinlich ganz simple.... face-sad

ich möchte mit Visual Studio eine Windows Form (entweder C oder VB) generieren mit folgender funktion

eine Conmbo box sollte den Ordner auswählen (...Projekte - Fahrzeug 1 - Fahrzeug 2....)
dann sollten die Dateien in dem Ordner (Pdf) vielleicht in einem Listenfeld angezeigt werden, mit der möglichkeit diese "anzuwählen" und per Button die Datei zu öffnen!

könnte mir jemand vielleicht etwas Hilfestellung geben, da ich in dem Thema noch nicht so fit bin leider face-sad

vielen Dank im voraus!

Mit freundlichen Grüßen Markus

Content-Key: 304236

Url: https://administrator.de/contentid/304236

Printed on: April 19, 2024 at 19:04 o'clock

Member: colinardo
Solution colinardo May 12, 2016 updated at 09:51:55 (UTC)
Goto Top
Hallo Markus,
sowas ist schnell gemacht. Hier ein absolutes Basis-Konstrukt ohne Schnickschnack, bestehend aus einer ComboBox und einer ListBox:

Erstelle eine Form, platziere dort eine Combobox mit dem Namen comboFolder und eine Listbox mit dem Namen lbFiles. den Pfad aus dem die Ordner in die Combobox eingelesen werden sollen wird in der Konstanten im Code Zeile 2 angegeben.

Das ganze kannst du natürlich nach belieben ausschmücken wie du lustig bist
Public Class Form1
    Const PATH = "C:\Pfad"  

    Private Sub comboFolder_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboFolder.SelectedIndexChanged
        lbFiles.Items.Clear()
        lbFiles.Items.AddRange(My.Computer.FileSystem.GetFiles(comboFolder.SelectedItem).ToArray())
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        comboFolder.Items.AddRange(My.Computer.FileSystem.GetDirectories(PATH).ToArray())
    End Sub

    Private Sub lbFiles_DoubleClick(sender As Object, e As EventArgs) Handles lbFiles.DoubleClick
        If lbFiles.SelectedIndex <> -1 Then
            Try
                Process.Start(lbFiles.SelectedItem)
            Catch ex As Exception
                MsgBox("Fehler : " & ex.Message)  
            End Try
        End If
    End Sub
End Class
Grüße Uwe

-edit- Kleine Korrektur
Mitglied: 117553
117553 May 12, 2016 at 10:25:33 (UTC)
Goto Top
super danke, genau das hab ich gesucht einen Ansatz auf dem ich Aufbauen kann. Dankeschön!
Mitglied: 117553
117553 May 13, 2016 at 19:38:44 (UTC)
Goto Top
Uwe eine kurze Frage, bin jetzt schon relativ weit gekommen, nur das getfilename bekomm ich nicht hin, bräuchte das er mir in der listbox nur den Namen der Datei anzeigt, wär nett wenn du mir hierbei noch helfen könntest!

  • Imports System.IO
Public Class Form1
Private PATHr, PATHp, PATHa As String

Private Sub comboFolder_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboFolder.SelectedIndexChanged
lbFiles.Items.Clear()
lbFiles.Items.AddRange(My.Computer.FileSystem.GetFiles(comboFolder.SelectedItem).ToArray())
End Sub
Private Sub comboFolder2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboFolder2.SelectedIndexChanged
lbFiles.Items.Clear()
lbFiles.Items.AddRange(My.Computer.FileSystem.GetFiles(comboFolder2.SelectedItem).ToArray())
End Sub
Private Sub comboFolder3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboFolder3.SelectedIndexChanged
lbFiles.Items.Clear()
lbFiles.Items.AddRange(My.Computer.FileSystem.GetFiles(comboFolder3.SelectedItem).ToArray())
End Sub

Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

PATHr = "C:\"
PATHp = "D:\"
PATHa = "C:\"

TextBox1.Text = System.IO.File.ReadAllText(Application.StartupPath & "\RMPfad.txt")
TextBox2.Text = System.IO.File.ReadAllText(Application.StartupPath & "\pPfad.txt")
TextBox3.Text = System.IO.File.ReadAllText(Application.StartupPath & "\aPfad.txt")

comboFolder.Items.AddRange(My.Computer.FileSystem.GetDirectories(PATHr).ToArray())
comboFolder2.Items.AddRange(My.Computer.FileSystem.GetDirectories(PATHp).ToArray())
comboFolder3.Items.AddRange(My.Computer.FileSystem.GetDirectories(PATHa).ToArray())

End Sub

Private Sub lbFiles_DoubleClick(sender As Object, e As EventArgs) Handles lbFiles.DoubleClick
If lbFiles.SelectedIndex <> -1 Then
Try
Process.Start(lbFiles.SelectedItem)
Catch ex As Exception
MsgBox("Fehler : " & ex.Message)
End Try
End If
End Sub

Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
Me.Size = New System.Drawing.Size(984, 491)
' Me.Size = New System.Drawing.Size(684, 641)
End Sub

Private Sub ToolStripButton3_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click
Form2.Show()
End Sub

Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
Me.Size = New System.Drawing.Size(684, 641)
' vergrößern und Textboxen anzeigen
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
lbFiles.Items.Clear()
PATHr = TextBox1.Text
PATHp = TextBox2.Text
PATHa = TextBox3.Text
Me.Size = New System.Drawing.Size(684, 491)
comboFolder.Items.Clear()
comboFolder2.Items.Clear()
comboFolder3.Items.Clear()
comboFolder.Items.AddRange(My.Computer.FileSystem.GetDirectories(PATHr).ToArray())
comboFolder2.Items.AddRange(My.Computer.FileSystem.GetDirectories(PATHp).ToArray())
comboFolder3.Items.AddRange(My.Computer.FileSystem.GetDirectories(PATHa).ToArray())
System.IO.File.WriteAllText(Application.StartupPath & "\RMPfad.txt", TextBox1.Text)
System.IO.File.WriteAllText(Application.StartupPath & "\pPfad.txt", TextBox2.Text)
System.IO.File.WriteAllText(Application.StartupPath & "\aPfad.txt", TextBox3.Text)

End Sub

End Class
Member: colinardo
Solution colinardo May 13, 2016, updated at May 14, 2016 at 11:41:35 (UTC)
Goto Top
Da gibt es mehrere möglichkeiten.
Ich könnte dir da zwar jetzt einen Einzeiler mit einer LINQ-Expression hinknallen, aber damit würdest du dir als Anfänger sehr schwer tun diesen zu verstehen, deswegen zeige ich dir die althergebrachte Methode wie
man die Elemente per ForEach Schleife in die Listbox überträgt, und dabei nur den Dateinamen übernimmt

for each itm as String in My.Computer.FileSystem.GetFiles(comboFolder2.SelectedItem)
     lbFiles.Items.Add(System.IO.Path.GetFilename(itm))
Next
IO.Path kennt auch noch weitere Methoden zum extrahieren von Pfadbestandteilen, z.B. GetFileNameWithoutExtension wenn du zusätzlich die Dateierweiterung nicht brauchst und nur den "Basename" der Datei haben willst.

https://msdn.microsoft.com/de-de/library/system.io.path_methods(v=vs.110 ...
Mitglied: 117553
117553 May 14, 2016 at 10:41:31 (UTC)
Goto Top
Funktioniert top, danke face-smile dein Link ist auch super. Werd dann nur noch mit getfullpath im doppelklick event der listbox den pfad wieder umändern müssen, da er die Datei ja sonst nicht findet. das schaff ich hoffentlich. Dir nochmeil ein ganz großes Dankeschön, da ich da wahrscheinlich eine Woche dran gesessen wäre face-smile hab mir jetzt auch ein Buch bei Amazon bestellt, dann wird das schon. Danke dir Uwe!