Feedback

C# - FolderBrowserDialog mit benutzerdefiniertem Root

Veröffentlicht von am 28.06.2013
(2 Bewertungen)
Der von mir schlicht FolderBrowserDialog2 genannte Dialog sieht absolut identisch wie der Standard-Dialog aus, aber bietet die Funktion den Root-Pfad benutzerdefiniert einzustellen. - Andere Einstellungsmöglichkeiten sind dafür eingeschränkt, aber erweiterbar.

string dir;
FolderBrowserDialog2 fbd = new FolderBrowserDialog2("Wählen Sie einen Unterordner.", "C:\Test");
if (fbd.ShowDialog() == Dialog.Result)
dir = fbd.SelectedPath;
GFU-Schulungen  [Anzeige]

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace System.Windows.Forms
{
    /// <summary>
    /// Stellt einen Ordnerwahl-Dialog mit benutzerdefiniertem Root-Ordner bereit.
    /// </summary>
    class FolderBrowserDialog2
    {
        /// <summary>
        /// Erstellt eine neue Instanz des Dialogs.
        /// </summary>
        public FolderBrowserDialog2 ()
        {
        }

        /// <summary>
        /// Erstellt eine neue Instanz des Dialogs.
        /// </summary>
        /// <param name="Description">Die angezeigte Beschreibung des Dialogs.</param>
        /// <param name="RootPath">Das Basisverzeichnis für den Dialog.</param>
        public FolderBrowserDialog2(string Description, string RootPath)
        {
            this.Description = Description;
            this.RootPath = RootPath;
        }

        /// <summary>
        /// Die angezeigte Beschreibung des Dialogs.
        /// </summary>
        public string Description = "Chose folder...";
        /// <summary>
        /// Das Basisverzeichnis für den Dialog.
        /// </summary>
        public string RootPath = "";
        /// <summary>
        /// Gibt den gewählten Pfad zurück (inklusive Root). Keine Voreinstellung möglich.
        /// </summary>
        public string SelectedPath = "";

        /// <summary>
        /// Zeigt den Dialog mit den gewählten EInstellungen.
        /// </summary>
        /// <returns>Der gewählte Pfad.</returns>
        public DialogResult ShowDialog()
        {
            var shellType = Type.GetTypeFromProgID("Shell.Application");
            var shell = Activator.CreateInstance(shellType);
            var folder = shellType.InvokeMember("BrowseForFolder", BindingFlags.InvokeMethod, null, shell, new object[] { 0, Description, 0, RootPath, });
            if (folder == null)
                return DialogResult.Cancel;
            else
            {
                var folderSelf = folder.GetType().InvokeMember("Self", BindingFlags.GetProperty, null, folder, null);
                SelectedPath = folderSelf.GetType().InvokeMember("Path", BindingFlags.GetProperty, null, folderSelf, null) as string;
                return DialogResult.OK;
            }
        }
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!