Freigeben über


FileDialog-Klasse

Zeigt ein Dialogfeld an, in dem der Benutzer eine Datei auswählen kann.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Syntax

'Declaration
Public MustInherit Class FileDialog
    Inherits CommonDialog
'Usage
Dim instance As FileDialog
public abstract class FileDialog : CommonDialog
public ref class FileDialog abstract : public CommonDialog
public abstract class FileDialog extends CommonDialog
public abstract class FileDialog extends CommonDialog

Hinweise

FileDialog ist eine abstrakte Klasse, die allgemeines Verhalten der OpenFileDialog-Klasse und der SaveFileDialog-Klasse enthält. Sie ist nicht für die direkte Verwendung vorgesehen, enthält jedoch allgemeines Verhalten für diese zwei Klassen. Sie können keine Instanz von FileDialog erstellen. Obwohl die Klasse als öffentlich deklariert ist, kann nicht von ihr geerbt werden, da sie interne abstrakte Methoden enthält. Erstellen Sie ein Dialogfeld zum Speichern oder Auswählen einer Datei mithilfe von OpenFileDialog oder SaveFileDialog.

FileDialog ist ein modales Dialogfeld. Bei dessen Anzeige werden daher alle anderen Bereiche der Anwendung blockiert, bis der Benutzer eine Datei ausgewählt hat. Wenn ein Dialogfeld modal angezeigt wird, können Eingaben (über die Tastatur oder per Mausklick) ausschließlich für die im Dialogfeld enthaltenen Objekte erfolgen. Ein modales Dialogfeld muss durch das Programm ausgeblendet oder geschlossen werden (üblicherweise als Reaktion auf eine Benutzeraktion), bevor eine Eingabe im aufrufenden Programm vorgenommen werden kann.

Warnung

Wenn Sie von FileDialog abgeleitete Klassen verwenden (z. B. OpenFileDialog und SaveFileDialog), sollten keine Zeichenfolgenliterale verwendet werden, die absolute Pfade enthalten. Rufen Sie stattdessen den Pfad dynamisch mit einer oder mehreren in der folgenden Tabelle beschriebenen Techniken ab.

Es gibt viele Möglichkeiten, einen Verzeichnispfad zu erstellen, je nachdem, um welchen Anwendungstyp es sich handelt, wie die der Anwendung zugeordneten Daten gespeichert werden und aus welchem Grund auf das Dateisystem zugegriffen wurde. In der folgenden Tabelle werden die Verfahren zum dynamischen Erstellen von Pfaden dargestellt.

Pfad- oder Programmkategorie

Zu verwendende Klassen und Member

Windows-Standardpfade, z. B. Programme, MyDocuments, Desktop usw.

Die System.Environment-Klasse ist dafür die vollständigste Quelle, entweder mithilfe ihrer statischen Methoden (z. B. SystemDirectory) oder mithilfe der GetFolderPath-Methode, wobei einer der Environment.SpecialFolder-Enumerationswerte verwendet wird.

Auf die aktuelle Anwendung bezogene Pfade

Die Application-Klasse verfügt zum Abrufen bestimmter Pfade über statische Member, z. B. StartupPath, ExecutablePath, LocalUserAppDataPath und CommonAppDataPath.

Die GetTempPath-Methode von System.IO.Path gibt den Pfad des temporären Ordners zurück.

Die GetCurrentDirectory-Methode der System.IO.Directory-Klasse gibt das aktuell ausführende Verzeichnis der Anwendung zurück.

Die RootDirectory-Eigenschaft der DriveInfo-Klasse stellt das Stammverzeichnis des angegebenen Laufwerks dar.

Als Anwendungseinstellungen gespeicherte Pfade

Greifen Sie auf die entsprechende Anwendungseinstellungseigenschaft der von ApplicationSettingsBase abgeleiteten Wrapperklasse zu. Weitere Informationen finden Sie unter Anwendungseinstellungen für Windows Forms.

Registrierungsspeicher

Einige Anwendungen speichern Verzeichnisinformationen in der Registrierung. Die Application-Klasse verfügt über die CommonAppDataPath-Eigenschaft und die LocalUserAppDataPath-Eigenschaft, die einen RegistryKey-Wert auflösen.

ClickOnce-Anwendungen

Verwenden Sie für ClickOnce-Anwendungen die Application-Klassenmember, z. B. UserAppDataPath, die dem ClickOnce-Datenverzeichnis einen Zeiger zurückgeben. Weitere Informationen finden Sie unter Zugreifen auf lokale und Remotedaten in einer ClickOnce-Anwendung.

Internationale Anwendungen

Verwenden Sie die System.Resources.ResourceReader-Klasse, um für internationale Anwendungen den relativen Teil des Pfads aus einer Zeichenfolgenressource in der Anwendung abzurufen. Weitere Informationen zu Globalisierung und Lokalisierung finden Sie unter Codierung und Lokalisierung.

Beachten Sie, dass ein vollständiger Pfad möglicherweise mit einer oder mehreren der beschriebenen Verfahren erstellt wird. Zum Beispiel kann mit der GetFolderPath-Methode möglicherweise der Pfad zum Ordner MyDocuments abgerufen werden, dann wird möglicherweise eine Anwendungseinstellung zum Hinzufügen eines relativen Teils des Unterverzeichnisses verwendet.

Die System.IO.Path-Klasse enthält statische Member zur Unterstützung beim Ändern absoluter und relativer Pfadzeichenfolgen, wobei die System.IO.File-Klasse und die System.IO.Directory-Klasse statische Member aufweisen, die tatsächlich jeweils Dateien und Verzeichnisse verändern.

Beispiel

Im folgenden Codebeispiel wird die OpenFileDialog-Implementierung von FileDialog verwendet und veranschaulicht, wie ein Dialogfeld erstellt und nach Festlegen der Eigenschaften angezeigt wird. Im Beispiel das Dialogfeld mithilfe der ShowDialog-Methode angezeigt und das DialogResult zurückgegeben. Voraussetzung für dieses Beispiel ist ein Formular, auf dem Button platziert und dem der System.IO-Namespace hinzugefügt wurde.

Private Sub button1_Click(sender As Object, e As System.EventArgs)
    Dim myStream As Stream
    Dim openFileDialog1 As New OpenFileDialog()
       
    openFileDialog1.InitialDirectory = "c:\"
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    openFileDialog1.FilterIndex = 2
    openFileDialog1.RestoreDirectory = True
       
    If openFileDialog1.ShowDialog() = DialogResult.OK Then
        myStream = openFileDialog1.OpenFile()
        If Not (myStream Is Nothing) Then
            ' Insert code to read the stream here.
            myStream.Close()
        End If
    End If
End Sub
private void button1_Click(object sender, System.EventArgs e)
{
    Stream myStream;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        if((myStream = openFileDialog1.OpenFile())!= null)
        {
            // Insert code to read the stream here.
            myStream.Close();
        }
    }
}
private:
   void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      Stream^ myStream;
      OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;

      openFileDialog1->InitialDirectory = "c:\\";
      openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
      openFileDialog1->FilterIndex = 2;
      openFileDialog1->RestoreDirectory = true;

      if ( openFileDialog1->ShowDialog() == ::DialogResult::OK )
      {
         if ( (myStream = openFileDialog1->OpenFile()) != nullptr )
         {
            // Insert code to read the stream here.
            myStream->Close();
         }
      }
   }
protected void button1_Click(Object sender, System.EventArgs e)
{
    Stream myStream;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.set_InitialDirectory("c:\\");
    openFileDialog1.set_Filter(
        "txt files (*.txt)|*.txt|All files (*.*)|*.*");
    openFileDialog1.set_FilterIndex(2);
    openFileDialog1.set_RestoreDirectory(true);
    if (openFileDialog1.ShowDialog().Equals(get_DialogResult().OK)) {
        if ((myStream = openFileDialog1.OpenFile()) != null) {
            // Insert code to read the stream here.
            myStream.Close();
        }
    }
} //button1_Click

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Windows.Forms.CommonDialog
        System.Windows.Forms.FileDialog
           System.Windows.Forms.OpenFileDialog
           System.Windows.Forms.SaveFileDialog

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

FileDialog-Member
System.Windows.Forms-Namespace
CommonDialog-Klasse
OpenFileDialog
SaveFileDialog
System.IO.Path
System.IO.File
System.IO.Directory
System.Environment
Application-Klasse
Microsoft.Win32.Registry
System.Resources.ResourceReader