Ausgehend von einem Verzeichnis möchte ich alle darunter liegenden Dateien
durchlaufen.
Um das Ausgangsverzeichnis auszuwählen, würde ich gerne so etwas wie einen
OpenFileDialog verwenden, nur dass man eben keine Datei auswählen kann,
sondern ein Verzeichnis.
Ich habe keine Möglichkeit gefunden, den OpenFileDialog über die
Eigenschaften so zu konfigurieren, dass man Verzeichnisse auswählen kann.
Geht das überhaupt?
Ansonsten würde mich interessieren, ob bereits jemand so einen
Verzeichnisauswahl-Dialog programmiert hat und mir ein paar Tipps geben
kann, wie man so etwas am besten macht.
Vielen Dank und Grüße,
Martin
wird immer wieder mal gefragt ... hier ein Code, aber ohne Garantie. Kann
durchaus sein, dass er in der nächsten Version des .NET Frameworks nicht
mehr funktioniert ...
In C#:
using System;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace FrankEller {
public class DirectorySelect : FolderNameEditor {
FolderBrowser fb = new FolderBrowser();
private string fDescription = "Verzeichnis wählen";
private string fReturnPath = String.Empty;
public string Description {
get { return fDescription; }
set { fDescription = value; }
}
public string ReturnPath {
get { return fReturnPath; }
}
public DirectorySelect() { }
private DialogResult RunDialog() {
fb.Description = this.Description;
fb.StartLocation = FolderBrowserFolder.MyComputer;
return fb.ShowDialog();
}
public DialogResult ShowDialog() {
DialogResult dRes = DialogResult.None;
dRes = RunDialog();
if (dRes == DialogResult.OK)
this.fReturnPath = fb.DirectoryPath;
else
this.fReturnPath = String.Empty;
return dRes;
}
}
}
in VB.NET:
Imports System
Imports System.Windows.Forms
Imports System.Windows.Forms.Design
Public Class DirectorySelect
Inherits FolderNameEditor
Dim fb As FolderBrowser = New FolderBrowser()
Dim fDescription As String = "Verzeichnis wählen"
Dim fReturnPath As String = String.Empty
Public Property Description() As String
Get
Return fDescription
End Get
Set(ByVal Value As String)
fDescription = Value
End Set
End Property
Public ReadOnly Property ReturnPath() As String
Get
Return fReturnPath
End Get
End Property
Function RunDialog() As DialogResult
Dim dres As DialogResult
fb.Description = Me.Description
fb.StartLocation = FolderBrowserFolder.MyComputer
dres = fb.ShowDialog()
Return dres
End Function
Public Function ShowDialog() As DialogResult
Dim dres As DialogResult
dres = RunDialog()
If dres = DialogResult.OK Then
Me.fReturnPath = fb.DirectoryPath
Else
Me.fReturnPath = String.Empty
End If
Return dres
End Function
End Class
Ich hoffe, das hilft dir weiter ...
Viele Grüße,
Frank Eller
www.frankeller.de
> wird immer wieder mal gefragt ... hier ein Code, aber ohne Garantie. Kann
> durchaus sein, dass er in der nächsten Version des .NET Frameworks nicht
> mehr funktioniert ...
Vielen Dank! Außerdem muss ich mich entschuldigen, weil ich nach dem Posting
erst einen entsprechenden Thread gefunden habe, in dem du den Code (in
VB.NET) bereits beschrieben hast.
Das Ganze funktioniert auch prima. Aber hast du eine Idee, warum Microsoft
so etwas nicht dokumentiert, bzw., warum sie das "verstecken"? Deutet das
darauf hin, das Microsoft ein derartiges Steuerelement für -- vielleicht --
die nächste Version plant, und schonmal vorgearbeitet hat?
Wie auch immer, ich finde es jedenfalls ziemlich nervig (und zeitraubend),
dass MS soche Steuerelemente noch nicht "offziell" im Framework integriert
hat...
Grüße,
Martin
> Das Ganze funktioniert auch prima. Aber hast du eine Idee, warum Microsoft
> so etwas nicht dokumentiert, bzw., warum sie das "verstecken"? Deutet das
> darauf hin, das Microsoft ein derartiges Steuerelement für --
vielleicht --
> die nächste Version plant, und schonmal vorgearbeitet hat?
in der Doku steht ausdrücklich, daß die Klasse nur für interne Zwecke
existiert, also Vorsicht.
Der richtige Weg wäre über die API-Funktion SHBrowseForFolder.
>
> Wie auch immer, ich finde es jedenfalls ziemlich nervig (und zeitraubend),
> dass MS soche Steuerelemente noch nicht "offziell" im Framework integriert
> hat...
da kann ich nur zustimmen.
Gruß
Joachim
--
NETMaster (Thomas Scheidegger)
http://www.cetus-links.org/oo_csharp.html
sehr gut gefunden!
Ich wußte schon, warum ich das noch nicht selbst in Angriff genommen
hatte...
Gruß
Joachim