none
FolderBrowserDialog - Filter nach Dateinamen RRS feed

  • Frage

  • Hallo,

    Ich lerne gerade ein wenig VB .Net und hab von meinem Chef ne kleine Aufgabe bekommen und bin auch schon fast fertig!

    Gerade hänge ich an dem Punkt fest das ich in einer "FolderBrowserDialog" nach Dateiendungen filter soll. Schaut euch mal den QC an. Wäre sehr nett von euch! Danke

    Public Class aufgabepk
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles cmdOpen.Click
            Try
                Dim strVerzeichnis As String = ""
                If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
                    strVerzeichnis = FolderBrowserDialog1.SelectedPath
                    lblBox1.Items.Clear()
                    Dim folder = My.Computer.FileSystem.GetDirectoryInfo(strVerzeichnis)
    		'müsste ja dann hier rein denk ich mal!
                    lblBox1.Items.AddRange(folder.GetFiles)
                Else
                End If
            Catch
                MessageBox.Show("Fehler")
            End Try
    
        End Sub
    
        Private Sub cmdClose_Click(sender As Object, e As EventArgs) Handles cmdClose.Click
            Me.Close()
        End Sub
    End Class

    Montag, 15. Juli 2013 08:29

Antworten

  • Hi,

    die Methode DirectoryInfo.GetFiles() ist mehrfach überladen. Siehe: http://msdn.microsoft.com/de-de/library/system.io.directoryinfo_methods.aspx .

    Zum Ermitteln von Dataeine bezogen auf die Dateiendung kannst Du z.B. so vorgehen:

     lblBox1.Items.AddRange(folder.GetFiles("*.doc"))

    oder wenn Du auch alle darunterliegende Verzeichnisse durchsuchen willst:

    lblBox1.Items.AddRange(folder.GetFiles("*.doc", SearchOption.AllDirectories))



    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    My Forum Threads

    • Als Antwort markiert compupal_de Montag, 15. Juli 2013 10:01
    Montag, 15. Juli 2013 08:36

Alle Antworten

  • Hi,

    die Methode DirectoryInfo.GetFiles() ist mehrfach überladen. Siehe: http://msdn.microsoft.com/de-de/library/system.io.directoryinfo_methods.aspx .

    Zum Ermitteln von Dataeine bezogen auf die Dateiendung kannst Du z.B. so vorgehen:

     lblBox1.Items.AddRange(folder.GetFiles("*.doc"))

    oder wenn Du auch alle darunterliegende Verzeichnisse durchsuchen willst:

    lblBox1.Items.AddRange(folder.GetFiles("*.doc", SearchOption.AllDirectories))



    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    My Forum Threads

    • Als Antwort markiert compupal_de Montag, 15. Juli 2013 10:01
    Montag, 15. Juli 2013 08:36
  • Herzlichen dank. hat mich zu nachdenken gebracht hab jetzt folgendes im code stehen!

    Public Class aufgabepk
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles cmdOpen.Click
            Try
                Dim strVerzeichnis As String = ""
    
                If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
                    
                    Dim FileDirectory As New IO.DirectoryInfo(FolderBrowserDialog1.SelectedPath)
                    Dim FilesFromDirectory As IO.FileInfo() = FileDirectory.GetFiles("*.sql")
                    Dim Dateinamenfilter As String
                    Dim Zieldatei As String = ""
                    For Each File As IO.FileInfo In FilesFromDirectory
                        Dateinamenfilter = Mid(File.Name, 1, 7)
                        If Dateinamenfilter = "Update_" Then
                            Me.ListBoxDateien.Items.Add(File.FullName)
                        End If
                        Zieldatei = File.Name
                    
                        File.MoveTo("Zielverzeichnis und Dateiname")
    
                    Next
    
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
        End Sub
    
        Private Sub cmdClose_Click(sender As Object, e As EventArgs) Handles cmdClose.Click
            Me.Close()
        End Sub
    End Class



    • Bearbeitet compupal_de Montag, 15. Juli 2013 10:03 Fehler Copy_Paste
    Montag, 15. Juli 2013 10:02
  • Hi,

    es gibt auch die Möglichkeit, die OpenFileDialog-Klasse zu verwenden. Da kannst du bereits vor dem Aufruf der ShowDialog-Methode einen Filter definieren, indem du der Filter-Eigenschaft einen String zuweist:

    OpenFileDialog1.Filter = "Word Dokumente (*.doc; *.docx)|*.doc;*.docx|Excel Dokumente (*.xls; *.xlsx)|*.xls;*.xlsx|Alle Dateien (*.*)|*.*"
    If OpenFileDialog1.ShowDialog = DialogResult.OK Then
    '...
    EndIf

    Der String sieht also wie folgt aus: "Dateibeschreibung|Dateiendung(en)". Schau dir auch die anderen Eigenschaften der Klasse OpenFileDialog an. Diese dürften auch von Interesse sein, z.B.

    OpenFileDialog1.DefaultExt = "doc"

    Gruß,

    LBB


    Montag, 15. Juli 2013 12:26
  • LBB,

    nicht wirklich, zumindest nicht für den FolderBrowserDialog. Bei OpenFileDialog und SaveFileDialog ist die Filter Eigenschaft anwendbar, nicht aber beim FolderBrowserDialog.


    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    My Forum Threads

    Montag, 15. Juli 2013 12:33
  • Hallo Hannes,

    ich hatte den OpenFileDialog vor den Augen. Habe meine Antwort entsprechend korrigiert.

    Gruss,

    LBB

    Dienstag, 16. Juli 2013 08:08
  • Hatt ich anfangs auch ;-)

    Hannes

    If you have got questions about this, just ask.

    In a perfect world,
    users would never enter data in the wrong form,
    files they choose to open would always exist
    and code would never have bugs.

    My Forum Threads

    Dienstag, 16. Juli 2013 10:56