Den file folder mit openfiledialog öffnen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Den file folder mit openfiledialog öffnen

    Hallo,

    ich möchte mit dem OpenFileDialog anhand des properties InitialDirectory für jede Spalte in meiner SQL Tabelle einen bestimmten Pfad raus suchen. Z.B. für die erste Spalte den Pfad "\\Oplex\bossroot\Kundenverzeichnis" und für die zweite Spalte der Tabelle, falls man sie anklickt den Pfad "\\Kero\bossroot\IncomingCorrespondence". Zudem weiß ich nicht, wie man nur einen Ordner wählt, ohne z.B. eine ".txt" Datei auszuwählen.
    Du kannst dann bevor du .Show() aufrufst die .SelectedPath Eigenschaft setzen.

    Also musst du vorher nur prüfen welche Spalte da nun angeklickst ist und gibst dann .SelectedPath den
    Pfad den es haben soll.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    schreibe ich das dann am besten so?

    VB.NET-Quellcode

    1. Dim newDataRow As DataGridViewRow
    2. If newDataRow.Cells(0).Value Then
    3. FolderBrowserDialog1.SelectedPath = "\\Oplex\bossroot\Kundenverzeichnis"
    4. End If
    5. If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
    6. txtPath.Text = FolderBrowserDialog1.SelectedPath
    7. End If
    @adnanche Zunächst machst Du Option Strict On. Visual Studio - Empfohlene Einstellungen
    Und dann so:

    VB.NET-Quellcode

    1. Dim newDataRow As DataGridViewRow = DataGridView1.Rows(0)
    2. If newDataRow.Cells(0).Value.ToString <> "" Then ' Du testest hier auf ein Boolean
    3. FolderBrowserDialog1.SelectedPath = "\\Oplex\bossroot\Kundenverzeichnis" ' ob dieser UNC-Pfad akzeptiert wird, weiß ich nicht. Ggf. brauchst Du einen Laufwerksbuchstaben
    4. End If
    5. If FolderBrowserDialog1.ShowDialog <> DialogResult.OK Then ' Escape => raus
    6. Return
    7. End If
    8. txtPath.Text = FolderBrowserDialog1.SelectedPath
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke, das war schon einmal hilfreich.
    Und wenn ich für jede Zeile einen anderen Pfad haben möchte. Etwas so in der Art?

    VB.NET-Quellcode

    1. Private Sub btnPath_Click(sender As Object, e As EventArgs) Handles btnPath.Click
    2. Dim newDataRow As DataGridViewRow = dgvDirectoryManagment.Rows(0)
    3. If newDataRow.Cells(0).Value.ToString <> "" Then ' Test auf ein Boolean
    4. FolderBrowserDialog1.SelectedPath = "\\gaia\bossroot\Aktenverzeichnis"
    5. End If
    6. If FolderBrowserDialog1.ShowDialog <> DialogResult.OK Then ' Escape = raus
    7. Return
    8. End If
    9. If newDataRow.Cells(1).Value.ToString <> "" Then ' Test auf ein Boolean
    10. FolderBrowserDialog1.SelectedPath = "\\gaia\bossroot\Kundenverzeichnis"
    11. End If
    12. If FolderBrowserDialog1.ShowDialog <> DialogResult.OK Then ' Escape = raus
    13. Return
    14. End If
    15. If newDataRow.Cells(2).Value.ToString <> "" Then ' Test auf ein Boolean
    16. FolderBrowserDialog1.SelectedPath = "\\gaia\bossroot\BOSS\IncomingCorrespondence"
    17. End If
    18. If FolderBrowserDialog1.ShowDialog <> DialogResult.OK Then ' Escape = raus
    19. Return
    20. End If
    21. txtPath.Text = FolderBrowserDialog1.SelectedPath​

    adnanche schrieb:

    Etwas so in der Art?
    Nein, eher so:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub btnPath_Click(sender As Object, e As EventArgs) Handles btnPath.Click
    2. Dim newDataRow As DataGridViewRow = dgvDirectoryManagment.Rows(0)
    3. If newDataRow.Cells(0).Value.ToString <> "" Then
    4. FolderBrowserDialog1.SelectedPath = "\\gaia\bossroot\Aktenverzeichnis"
    5. Else If newDataRow.Cells(1).Value.ToString <> "" Then
    6. FolderBrowserDialog1.SelectedPath = "\\gaia\bossroot\Kundenverzeichnis"
    7. Else If newDataRow.Cells(2).Value.ToString <> "" Then
    8. FolderBrowserDialog1.SelectedPath = "\\gaia\bossroot\BOSS\IncomingCorrespondence"
    9. End If
    10. If FolderBrowserDialog1.ShowDialog <> DialogResult.OK Then ' Escape = raus
    11. Return
    12. End If
    13. txtPath.Text = FolderBrowserDialog1.SelectedPath
    Da darf aber nur in einer Zelle der DGV-Zeile was stehen, sonst nimmt er immer die vorderste gefüllte Zelle.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @adnanche Zelle <> Zeile!
    Der Code untersucht Zellen (Spalten) einer Zeile.
    Welche Zeile verwendet wird, hast Du in Deinem Code so festgelegt:

    VB.NET-Quellcode

    1. Dim newDataRow As DataGridViewRow = dgvDirectoryManagment.Rows(0) ' die 0 hier
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    adnanche schrieb:

    Es wäre aber ganz gut wenn ich jede Zeile anklicken könnte
    Kann es sein, dass Du Deinen eigenen Code nicht verstehst?
    Da musst Du statt dgvDirectoryManagment.Rows(0) dies verwenden:

    VB.NET-Quellcode

    1. Dim newDataRow As DataGridViewRow = dgvDirectoryManagment.SelectedRows(0)
    Wenn Du auf eine Zelle direkt klicken willst und diese dann auswertest, machst Du:

    VB.NET-Quellcode

    1. Dim cell = Me.DataGridView1.SelectedCells(0)
    Allerdings darf dann der SelectionMode des DGV nicht auf FullRowSelect stehen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!