453 Stimmen

Wie verwende ich OpenFileDialog, um einen Ordner auszuwählen?

Ich hatte vor, das folgende Projekt zu verwenden: https://github.com/scottwis/OpenFileOrFolderDialog

Allerdings gibt es ein Problem: Es verwendet die GetOpenFileName Funktion und OPENFILENAME Struktur. OPENFILENAME hat das Mitglied namens templateID der der Bezeichner für die Dialogvorlage ist. Und das Projekt enthält die res1.rc Datei und die Dialogvorlage init. Aber ich konnte nicht herausfinden, wie man diese Datei zu meinem C#-Projekt anhängen.

Gibt es eine bessere Möglichkeit, eine OpenFileDialog um Ordner auszuwählen?

0voto

So verwende ich den Ordner-Browser-Dialog in Kleines Visual Basic . Dieser Code löst das Problem des nicht ausgewählten Anfangsordners und wählt außerdem den Ordner aus der Zwischenablage oder der Registrierung (falls vorhanden) aus, und wenn der Ordner gelöscht wird, geht er über die Eltern, bis er einen vorhandenen Ordner auswählt. Dies macht die Verwendung des Dialogs sehr komfortabel.

Beachten Sie, dass ich 4 Registerkarten sende, weil ich die Schaltfläche "Neuen Ordner erstellen" einblende, aber wenn Sie diese ausblenden, verwenden Sie nur zwei Registerkarten.

Public Shared Function OpenFolderDialog(initialFolder As String) As String
    Dim folder = GetInitialFolder(initialFolder)
    If folder = "" Then folder = GetInitialFolder(System.Windows.Clipboard.GetText())
    If folder = "" Then folder = GetInitialFolder(GetSetting("sVB", "OpenFolder", "LastFolder", ""))

    Dim th As New Threading.Thread(
        Sub()
            Threading.Thread.Sleep(300)
            System.Windows.Forms.SendKeys.SendWait("{TAB}{TAB}{TAB}{TAB}{RIGHT}")
        End Sub)
    th.Start()

    Try
        Dim dlg As New System.Windows.Forms.FolderBrowserDialog With {
            .Description = "Select a folder:",
            .SelectedPath = folder
        }

        If dlg.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            SaveSetting("sVB", "OpenFolder", "LastFolder", dlg.SelectedPath)
            OpenFolderDialog = dlg.SelectedPath
        End If

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Function

Private Shared Function GetInitialFolder(folder As String) As String
    Try
        If folder <> "" Then
            If IO.File.Exists(folder) Then
                folder = Path.GetDirectoryName(folder)
            Else
                Do
                    If Directory.GetDirectoryRoot(folder) = folder OrElse Directory.Exists(folder) Then
                        Exit Do
                    End If
                    folder = Path.GetDirectoryName(folder)
                Loop
            End If
        End If

    Catch
        folder = ""
    End Try

    Return folder
End Function

-6voto

AHM Punkte 15

Dies sollte der offensichtlichste und einfachste Weg sein

using (var dialog = new System.Windows.Forms.FolderBrowserDialog())
{

   System.Windows.Forms.DialogResult result = dialog.ShowDialog();

   if(result == System.Windows.Forms.DialogResult.OK)
   {
      selectedFolder = dialog.SelectedPath;
   }

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X