C# - FolderNameEditor osztály használata

forráskód letöltése
Állományokkal dolgozó alkalmazásokban gyakori feladat, hogy a felhasználó egy dialógusablakban választhassa ki a neki tetsző könyvtárat, így nem kell arra kényszerítenünk, hogy begépelje az esetleg hosszú mappanevet. Erre a célra használhatjuk az OpenFileDialog komponens lehetőségeit, vagy egy beépített ablakot. Cikkünkben bemutatjuk, hogy ez utóbbit hogyan érhetjük el, és milyen képességei vannak.
A System.Windows.Forms.Design névteret szemlélve találhatunk egy osztályt, melynek neve FolderNameEditor. Az osztály – a többi osztállyal egyetemben – alkalmas arra, hogy egy speciális property-t szerkeszthetővé tegyen, vagyis ha megnyomjuk a property mellett található gombot a Tulajdonság ablakban, akkor megjelenik jelen esetben egy panel, benne a könyvtárakkal. De miért ne használhatnánk ezt a panelt mi is az alkalmazásban? Ezt fogjuk tenni.
A mellékelt példa két projektet tartalmaz, melyek egyike a dialógusablak kódját tartalmazza. Az osztály használata előtt mindkét projektben referenciaként meg kell adnunk a System.Design névteret (System.Design.dll).
A projektben létrehozunk egy utódosztályt, melynek őse a FolderNameEditor osztály lesz.
public class FDUControl : FolderNameEditor
{
  ...
}
Az osztályban deklarálunk egy tagobjektumot, melynek típusa FolderNameEditor.FolderBrowser lesz.
private FolderNameEditor.FolderBrowser browser;
...
public FDUControl()
{
  browser = new FolderNameEditor.FolderBrowser();
Az osztály konstruktorában megadjuk a tagobjektum stílusára és kezdőkönyvtárára vonatkozó információkat. A StartLocation property tartalmazza majd a kezdőkönyvtár nevét, míg a Style property a stílusinformációkat.
  browser.StartLocation = FolderBrowserFolder.Desktop;
  browser.Style = FolderBrowserStyles.ShowTextBox;      
}
A kezdőkönyvtár a FolderBrowserFolder felsorolt típus valamelyik eleme kell, hogy legyen. Ennek elemei a következők, melyek közül a Desktop elemet kiválasztva elérhetjük, hogy az asztal jelenjen meg gyökérként.
  • Desktop
  • Favorites
  • MyComputer
  • MyDocuments
  • MyPictures
  • NetAndDialUpConnections
  • NetworkNeighborhood
  • Printers
  • Recent
  • SendTo
  • StartMenu
  • Templates
A Style property értéke a FolderBrowserStyles felsorolt típus, melyek a következők elemekből állnak:
  • BrowseForComputer
  • BrowseForEverything
  • BrowseForPrinter
  • RestrictToDomain
  • RestrictToFilesystem
  • RestrictToSubfolders
  • ShowTextBox
A ShowTextBox elemet választva elérjük, hogy egy szövegmező jelenjen meg a dialógusablakban, benne az éppen kibontott mappa nevével.
Az osztály Description property-je tartalmazza azt a szöveget, mely megjelenik a dialógusablak fejléce alatt. A DirectoryPath property-ből pedig lekérdezhető, hogy mely mappát választottuk ki.
Az osztályban létrehoztunk egy metódust, melyet meghívva megjeleníthetjük a dialógusablakot.
public DialogResult ShowDialog()
{    
  return browser.ShowDialog();
}
Az alkalmazásban a gomb megnyomásakor példányosítjuk az osztályt, majd megjelenítjük a dialógusablakot.
FDULibrary.FDUControl folderbrowser = new FDULibrary.FDUControl();
if (folderbrowser.ShowDialog()==DialogResult.OK) 
{
  textBox1.Text = folderbrowser.DirectoryPath;
  ...
Amennyiben a választás megtörtént, a mappa neve megjelenik a szövegmezőben. A mappa elérési útvonalát az objektum property-jéből tudhatjuk meg.