共用方式為


如何開啟通用對話方塊 (WPF .NET)

本文會示範如何在 Windows Presentation Foundation (WPF) 中顯示通用系統對話方塊。 Windows 會實作所有應用程式通用且可重複使用的不同類型對話方塊,包括用於選取檔案和列印的對話方塊。

由於這些對話方塊是由作業系統提供,因此這些對話方塊可在作業系統上執行的所有應用程式之間共用。 這些對話方塊提供一致的使用者體驗,稱為「通用對話方塊」。 當使用者在一個應用程式中使用通用對話方塊時,使用者不需要了解如何在其他應用程式中使用該對話方塊。

訊息方塊是另一個常見的通用對話方塊。 如需詳細資訊,請參閱如何開啟訊息方塊

開啟檔案對話方塊

檔案開啟功能會使用 [開啟檔案] 對話方塊來擷取要開啟之檔案的名稱。

[開啟] 對話方塊顯示從 WPF 應用程式擷取檔案的位置。

通用 [開啟檔案] 對話方塊會實作為 OpenFileDialog 類別,且位於 Microsoft.Win32 命名空間中。 下列程式碼會示範如何建立、設定及顯示對話方塊。

// Configure open file dialog box
var dialog = new Microsoft.Win32.OpenFileDialog();
dialog.FileName = "Document"; // Default file name
dialog.DefaultExt = ".txt"; // Default file extension
dialog.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension

// Show open file dialog box
bool? result = dialog.ShowDialog();

// Process open file dialog box results
if (result == true)
{
    // Open document
    string filename = dialog.FileName;
}
' Configure open file dialog box
Dim dialog As New Microsoft.Win32.OpenFileDialog()
dialog.FileName = "Document" ' Default file name
dialog.DefaultExt = ".txt" ' Default file extension
dialog.Filter = "Text documents (.txt)|*.txt" ' Filter files by extension

' Show open file dialog box
Dim result As Boolean? = dialog.ShowDialog()

' Process open file dialog box results
If result = True Then
    ' Open document
    Dim filename As String = dialog.FileName
End If

如需 [開啟檔案] 對話方塊的詳細資訊,請參閱 Microsoft.Win32.OpenFileDialog

儲存對話方塊

檔案儲存功能會使用 [儲存檔案] 對話方塊來擷取要儲存之檔案的名稱。

[另存新檔] 對話方塊顯示從 WPF 應用程式儲存檔案的位置。

通用 [儲存檔案] 對話方塊會實作為 SaveFileDialog 類別,且位於 Microsoft.Win32 命名空間中。 下列程式碼會示範如何建立、設定及顯示對話方塊。

// Configure save file dialog box
var dialog = new Microsoft.Win32.SaveFileDialog();
dialog.FileName = "Document"; // Default file name
dialog.DefaultExt = ".txt"; // Default file extension
dialog.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension

// Show save file dialog box
bool? result = dialog.ShowDialog();

// Process save file dialog box results
if (result == true)
{
    // Save document
    string filename = dialog.FileName;
}
' Configure save file dialog box
Dim dialog As New Microsoft.Win32.SaveFileDialog()
dialog.FileName = "Document" ' Default file name
dialog.DefaultExt = ".txt" ' Default file extension
dialog.Filter = "Text documents (.txt)|*.txt" ' Filter files by extension

' Show save file dialog box
Dim result As Boolean? = dialog.ShowDialog()

' Process save file dialog box results
If result = True Then
    ' Save document
    Dim filename As String = dialog.FileName
End If

如需 [儲存檔案] 對話方塊的詳細資訊,請參閱 Microsoft.Win32.SaveFileDialog

[開啟資料夾] 對話方塊

重要

[開啟資料夾] 對話方塊適用於 .NET 8.0 和更新版本。

使用者會使用 [開啟資料夾] 對話方塊來選取一或多個資料夾,並將它們傳回程式。 例如,如果您的程式已顯示資料夾的相關資訊,例如資料夾中的檔案數量和檔案名稱,您可以使用 [開啟資料夾] 對話方塊來讓使用者選擇資料夾。

顯示 [圖片] 資料夾的 [開啟資料夾] 對話方塊,其中已選取 [手機相簿] 資料夾,從 WPF 應用程式顯示。

通用 [開啟資料夾] 對話方塊會實作為 OpenFolderDialog 類別,且位於 Microsoft.Win32 命名空間中。 下列程式碼會示範如何建立、設定及顯示對話方塊。

// Configure open folder dialog box
Microsoft.Win32.OpenFolderDialog dialog = new();

dialog.Multiselect = false;
dialog.Title = "Select a folder";

// Show open folder dialog box
bool? result = dialog.ShowDialog();

// Process open folder dialog box results
if (result == true)
{
    // Get the selected folder
    string fullPathToFolder = dialog.FolderName;
    string folderNameOnly = dialog.SafeFolderName;
}
' Configure open folder dialog box
Dim dialog As New Microsoft.Win32.OpenFolderDialog()

dialog.Multiselect = True
dialog.Title = "Select a folder"

' Show open folder dialog box
Dim result As Boolean? = dialog.ShowDialog()

' Process open folder dialog box results
If result = True Then

    ' Get multiple folder names
    For index = 0 To dialog.FolderNames.Length
        ' Get the selected folder
        Dim fullPathToFolder As String = dialog.FolderNames(index)
        Dim folderNameOnly As String = dialog.SafeFolderNames(index)
    Next

End If

如需 [開啟資料夾] 對話方塊的詳細資訊,請參閱 Microsoft.Win32.OpenFolderDialog

列印功能使用 [列印] 對話方塊來選擇及設定使用者想要用於列印資料的印表機。

WPF 應用程式顯示的列印對話方塊。

通用 [列印] 對話方塊會實作為 PrintDialog 類別,且位於 System.Windows.Controls 命名空間中。 下列程式碼示範如何建立、設定及顯示一個對話方塊。

// Configure printer dialog box
var dialog = new System.Windows.Controls.PrintDialog();
dialog.PageRangeSelection = System.Windows.Controls.PageRangeSelection.AllPages;
dialog.UserPageRangeEnabled = true;

// Show save file dialog box
bool? result = dialog.ShowDialog();

// Process save file dialog box results
if (result == true)
{
    // Document was printed
}
' Configure printer dialog box
Dim dialog As New System.Windows.Controls.PrintDialog()
dialog.PageRangeSelection = System.Windows.Controls.PageRangeSelection.AllPages
dialog.UserPageRangeEnabled = True

' Show save file dialog box
Dim result As Boolean? = dialog.ShowDialog()

' Process save file dialog box results
If result = True Then
    ' Document was printed
End If

如需 [列印] 對話方塊的詳細資訊,請參閱 System.Windows.Controls.PrintDialog。 如需在 WPF 中列印的詳細討論,請參閱列印概觀

另請參閱