FileDialog 類別

定義

顯示對話方塊,讓使用者可以從中選取檔案。

public ref class FileDialog abstract : System::Windows::Forms::CommonDialog
public abstract class FileDialog : System.Windows.Forms.CommonDialog
type FileDialog = class
    inherit CommonDialog
Public MustInherit Class FileDialog
Inherits CommonDialog
繼承
衍生

範例

下列程式碼範例會 OpenFileDialog 使用 的 實作 FileDialog ,並說明如何建立、設定屬性,以及顯示對話方塊。 此範例會 ShowDialog 使用 方法來顯示對話方塊並傳回 DialogResult 。 此範例需要具有 放置於它的 表單 Button ,以及 System.IO 新增至它的命名空間。

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() == System::Windows::Forms::DialogResult::OK )
      {
         if ( (myStream = openFileDialog1->OpenFile()) != nullptr )
         {
            // Insert code to read the stream here.
            myStream->Close();
         }
      }
   }
var fileContent = string.Empty;
var filePath = string.Empty;

using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
    openFileDialog.InitialDirectory = "c:\\";
    openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    openFileDialog.FilterIndex = 2;
    openFileDialog.RestoreDirectory = true;

    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        //Get the path of specified file
        filePath = openFileDialog.FileName;

        //Read the contents of the file into a stream
        var fileStream = openFileDialog.OpenFile();

        using (StreamReader reader = new StreamReader(fileStream))
        {
            fileContent = reader.ReadToEnd();
        }
    }
}

MessageBox.Show(fileContent, "File Content at path: " + filePath, MessageBoxButtons.OK);
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim myStream As Stream = Nothing
    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() = System.Windows.Forms.DialogResult.OK Then
        Try
            myStream = openFileDialog1.OpenFile()
            If (myStream IsNot Nothing) Then
                ' Insert code to read the stream here.
            End If
        Catch Ex As Exception
            MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
        Finally
            ' Check this again, since we need to make sure we didn't throw an exception on open.
            If (myStream IsNot Nothing) Then
                myStream.Close()
            End If
        End Try
    End If
End Sub

備註

FileDialog是抽象類別,其中包含 和 SaveFileDialog 類別的 OpenFileDialog 常見行為。 它並非直接使用,而是包含這兩個類別的常見行為。 您無法建立 的 FileDialog 實例。 雖然類別宣告為 public,但您無法繼承它,因為它包含內部抽象方法。 若要建立對話方塊以選取或儲存檔案,請使用 OpenFileDialogSaveFileDialog

FileDialog 是強制回應對話方塊;因此,顯示時,它會封鎖應用程式的其餘部分,直到使用者選擇檔案為止。 當對話方塊以強制模式顯示時,除了對話方塊上的物件之外,不會發生任何輸入 (鍵盤或滑鼠按一下) 。 程式必須隱藏或關閉對話方塊 (通常會回應某些使用者動作) ,才能發生呼叫程式的輸入。

警告

當您使用衍生自 FileDialog 的類別時,例如 OpenFileDialogSaveFileDialog ,請避免使用包含絕對路徑的字串常值。 相反地,使用下表所述的一或多個技術動態取得路徑。

如果您想要讓使用者選取資料夾而非檔案,請使用 FolderBrowserDialog

根據應用程式類型、與應用程式相關聯的資料儲存方式,以及存取檔案系統的原因,您可以透過許多可能的方式建立目錄路徑。 下表顯示動態建立路徑的技術。

路徑或程式類別 要使用的類別和成員
標準 Windows 路徑,例如 Program Files、MyDocuments、Desktop 等等 類別 System.Environment 是這些類別的最完整來源,無論是透過其靜態方法,例如 SystemDirectory ,或是透過 GetFolderPath 方法,使用其中 Environment.SpecialFolder 一個列舉值。
與目前應用程式相關的路徑 類別 Application 具有靜態成員來取得特定路徑,例如 StartupPathExecutablePathLocalUserAppDataPathCommonAppDataPath

System.IO.Path 方法會 GetTempPath 傳回暫存資料夾的路徑。

類別 GetCurrentDirectorySystem.IO.Directory 方法會傳回應用程式的目前執行目錄。

類別 RootDirectoryDriveInfo 屬性代表指定的磁片磁碟機根目錄。
儲存為應用程式設定的路徑 存取衍生自 ApplicationSettingsBase 之包裝函式類別的對應應用程式設定屬性。 如需詳細資訊,請參閱Windows Forms 的應用程式設定
登錄儲存體 有些應用程式會將目錄資訊儲存在登錄中。 類別 Application 具有 CommonAppDataPath 解析為 RegistryKey 值的 和 LocalUserAppDataPath 屬性。
ClickOnce 應用程式 針對 ClickOnce 應用程式,請使用 Application 類別成員,例如 UserAppDataPath ,這會傳回 ClickOnce 資料目錄的指標。 如需詳細資訊,請參閱 存取 ClickOnce 應用程式中的本機和遠端資料
國際應用程式 對於國際應用程式,請使用 System.Resources.ResourceReader 類別,從應用程式中的字串資源擷取相對路徑部分。 如需全球化和當地語系化的詳細資訊,請參閱 全球化和當地語系化主題。

請注意,完整路徑可以使用一或多個所述的技術來建置。 例如, GetFolderPath 方法可用來取得 MyDocuments 資料夾的路徑,然後可以使用應用程式設定來新增相對子目錄部分。

類別 System.IO.Path 包含靜態成員,可協助操作絕對和相對路徑字串,而 System.IO.FileSystem.IO.Directory 類別則分別具有實際操作檔案和目錄的靜態成員。

重要

如果應用程式的使用者變更 中的 FileDialog 資料夾,則應用程式的目前工作目錄會設定為 中指定的 FileDialog 位置。 若要避免這種情況,請將 RestoreDirectory 屬性設定為 true

欄位

EventFileOk

擁有 FileOk 事件。

屬性

AddExtension

取得或設定值,指出對話方塊是否在使用者遺漏副檔名時,自動加入檔案的副檔名。

AddToRecent

取得或設定值,指出對話方塊是否會將開啟或儲存的檔案新增至最近的清單。

AutoUpgradeEnabled

取得或設定值,指出這個 FileDialog 實例是否應該在 Windows Vista 上執行時自動升級外觀和行為。

CanRaiseEvents

取得值,指出元件是否能引發事件。

(繼承來源 Component)
CheckFileExists

取得或設定值,指出如果使用者指定不存在的檔名,對話方塊是否顯示警告訊息。

CheckPathExists

取得或設定值,指出如果使用者指定不存在的路徑,對話方塊是否顯示警告訊息。

ClientGuid

取得或設定要與此對話方塊狀態相關聯的 GUID。 通常,如上次瀏覽的資料夾,以及對話方塊的位置及大小等狀態,會根據可執行檔的名稱來保存。 透過指定 GUID,應用程式便可以針對相同應用程式內不同版本的對話方塊 (例如匯入對話方塊與開啟對話方塊) 具有不同的保存狀態。

在應用程式未使用視覺效果樣式,或是 AutoUpgradeEnabled 已設定為 false 的情況下,將無法使用此功能。

Container

取得包含 IContainerComponent

(繼承來源 Component)
CustomPlaces

取得此 FileDialog 執行個體的自訂位置集合。

DefaultExt

取得或設定預設的副檔名。

DereferenceLinks

取得或設定值,指出對話方塊是傳回捷徑所參照的檔案位置,還是傳回捷徑 (.lnk) 的位置。

DesignMode

取得值,指出 Component 目前是否處於設計模式。

(繼承來源 Component)
Events

取得附加在這個 Component 上的事件處理常式清單。

(繼承來源 Component)
FileName

取得或設定含有檔案對話方塊中所選取檔名的字串。

FileNames

取得對話方塊中所有選取檔案的檔名。

Filter

取得或設定目前的檔名篩選字串,以決定出現在對話方塊中 [另存檔案類型] 或 [檔案類型] 方塊的選項。

FilterIndex

取得或設定檔案對話方塊中目前所選取之篩選條件的索引。

InitialDirectory

取得或設定檔案對話方塊所顯示的初始目錄。

Instance

取得應用程式的 Win32 執行個體控制代碼 (Instance Handle)。

OkRequiresInteraction

取得或設定值,指出是否停用對話方塊的 [確定] 按鈕,直到使用者巡覽檢視或編輯檔案名 (是否適用) 。

Options

取得值來初始化 FileDialog

RestoreDirectory

取得或設定值,指出對話方塊是否在關閉前將目錄還原至先前選取的目錄。

ShowHelp

取得或設定值,指出是否在 [檔案] 對話方塊中顯示 [說明] 按鈕。

ShowHiddenFiles

取得或設定值,指出對話方塊是否顯示隱藏和系統檔案。

ShowPinnedPlaces

取得或設定值,指出是否顯示檢視流覽窗格中預設顯示的專案。

Site

取得或設定 ComponentISite

(繼承來源 Component)
SupportMultiDottedExtensions

取得或設定對話方塊是否支援顯示和儲存具有多個副檔名的檔案。

Tag

取得或設定包含控制項相關資料的物件。

(繼承來源 CommonDialog)
Title

取得或設定檔案對話方塊的標題。

ValidateNames

取得或設定值,指出對話方塊是否只接受有效的 Win32 檔名。

方法

CreateObjRef(Type)

建立包含所有相關資訊的物件,這些資訊是產生用來與遠端物件通訊的所需 Proxy。

(繼承來源 MarshalByRefObject)
Dispose()

釋放 Component 所使用的所有資源。

(繼承來源 Component)
Dispose(Boolean)

釋放 Component 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

(繼承來源 Component)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetLifetimeService()
已淘汰.

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetService(Type)

傳回表示 Component 或其 Container 所提供之服務的物件。

(繼承來源 Component)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
HookProc(IntPtr, Int32, IntPtr, IntPtr)

定義為了將特定功能加入檔案對話方塊中而覆寫的通用對話方塊攔截程序 (Hook Procedure)。

InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個執行個體的存留期原則。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 物件的淺層複本。

(繼承來源 MarshalByRefObject)
OnFileOk(CancelEventArgs)

引發 FileOk 事件。

OnHelpRequest(EventArgs)

引發 HelpRequest 事件。

(繼承來源 CommonDialog)
OwnerWndProc(IntPtr, Int32, IntPtr, IntPtr)

定義為了將特定功能加入通用對話方塊中而覆寫的主控視窗 (Owner Window) 程序。

(繼承來源 CommonDialog)
Reset()

重設所有屬性為預設值。

RunDialog(IntPtr)

指定通用對話方塊。

ShowDialog()

以預設的擁有人來執行通用對話方塊。

(繼承來源 CommonDialog)
ShowDialog(IWin32Window)

以指定的擁有人來執行通用對話方塊。

(繼承來源 CommonDialog)
ToString()

提供這個物件的字串版本。

事件

Disposed

Dispose() 方法的呼叫處置元件時,就會發生。

(繼承來源 Component)
FileOk

發生於使用者按一下 [檔案] 對話方塊上的 [開啟] 或 [儲存] 按鈕時。

HelpRequest

發生於使用者按一下通用對話方塊上的 [說明] 按鈕時。

(繼承來源 CommonDialog)

適用於

另請參閱