FolderBrowserDialog 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提示使用者選取資料夾。 此類別無法獲得繼承。
public ref class FolderBrowserDialog sealed : System::Windows::Forms::CommonDialog
public sealed class FolderBrowserDialog : System.Windows.Forms.CommonDialog
type FolderBrowserDialog = class
inherit CommonDialog
Public NotInheritable Class FolderBrowserDialog
Inherits CommonDialog
- 繼承
範例
下列程式代碼範例會建立一個應用程式,讓用戶能夠在控件內 RichTextBox 開啟 rtf (.rtf) 檔案。
// The following example displays an application that provides the ability to
// open rich text files (rtf) into the RichTextBox. The example demonstrates
// using the FolderBrowserDialog to set the default directory for opening files.
// The OpenFileDialog is used to open the file.
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::IO;
public ref class FolderBrowserDialogExampleForm: public System::Windows::Forms::Form
{
private:
FolderBrowserDialog^ folderBrowserDialog1;
OpenFileDialog^ openFileDialog1;
RichTextBox^ richTextBox1;
MainMenu^ mainMenu1;
MenuItem^ fileMenuItem;
MenuItem^ openMenuItem;
MenuItem^ folderMenuItem;
MenuItem^ closeMenuItem;
String^ openFileName;
String^ folderName;
bool fileOpened;
public:
// Constructor.
FolderBrowserDialogExampleForm()
{
fileOpened = false;
this->mainMenu1 = gcnew System::Windows::Forms::MainMenu;
this->fileMenuItem = gcnew System::Windows::Forms::MenuItem;
this->openMenuItem = gcnew System::Windows::Forms::MenuItem;
this->folderMenuItem = gcnew System::Windows::Forms::MenuItem;
this->closeMenuItem = gcnew System::Windows::Forms::MenuItem;
this->openFileDialog1 = gcnew System::Windows::Forms::OpenFileDialog;
this->folderBrowserDialog1 = gcnew System::Windows::Forms::FolderBrowserDialog;
this->richTextBox1 = gcnew System::Windows::Forms::RichTextBox;
this->mainMenu1->MenuItems->Add( this->fileMenuItem );
array<System::Windows::Forms::MenuItem^>^temp0 = {this->openMenuItem,this->closeMenuItem,this->folderMenuItem};
this->fileMenuItem->MenuItems->AddRange( temp0 );
this->fileMenuItem->Text = "File";
this->openMenuItem->Text = "Open...";
this->openMenuItem->Click += gcnew System::EventHandler( this, &FolderBrowserDialogExampleForm::openMenuItem_Click );
this->folderMenuItem->Text = "Select Directory...";
this->folderMenuItem->Click += gcnew System::EventHandler( this, &FolderBrowserDialogExampleForm::folderMenuItem_Click );
this->closeMenuItem->Text = "Close";
this->closeMenuItem->Click += gcnew System::EventHandler( this, &FolderBrowserDialogExampleForm::closeMenuItem_Click );
this->closeMenuItem->Enabled = false;
this->openFileDialog1->DefaultExt = "rtf";
this->openFileDialog1->Filter = "rtf files (*.rtf)|*.rtf";
// Set the help text description for the FolderBrowserDialog.
this->folderBrowserDialog1->Description = "Select the directory that you want to use as the default.";
// Do not allow the user to create new files via the FolderBrowserDialog.
this->folderBrowserDialog1->ShowNewFolderButton = false;
// Default to the My Documents folder.
this->folderBrowserDialog1->RootFolder = Environment::SpecialFolder::Personal;
this->richTextBox1->AcceptsTab = true;
this->richTextBox1->Location = System::Drawing::Point( 8, 8 );
this->richTextBox1->Size = System::Drawing::Size( 280, 344 );
this->richTextBox1->Anchor = static_cast<AnchorStyles>(AnchorStyles::Top | AnchorStyles::Left | AnchorStyles::Bottom | AnchorStyles::Right);
this->ClientSize = System::Drawing::Size( 296, 360 );
this->Controls->Add( this->richTextBox1 );
this->Menu = this->mainMenu1;
this->Text = "RTF Document Browser";
}
private:
// Bring up a dialog to open a file.
void openMenuItem_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// If a file is not opened then set the initial directory to the
// FolderBrowserDialog::SelectedPath value.
if ( !fileOpened )
{
openFileDialog1->InitialDirectory = folderBrowserDialog1->SelectedPath;
openFileDialog1->FileName = nullptr;
}
// Display the openFile Dialog.
System::Windows::Forms::DialogResult result = openFileDialog1->ShowDialog();
// OK button was pressed.
if ( result == ::DialogResult::OK )
{
openFileName = openFileDialog1->FileName;
try
{
// Output the requested file in richTextBox1.
Stream^ s = openFileDialog1->OpenFile();
richTextBox1->LoadFile( s, RichTextBoxStreamType::RichText );
s->Close();
fileOpened = true;
}
catch ( Exception^ exp )
{
MessageBox::Show( String::Concat( "An error occurred while attempting to load the file. The error is: ", System::Environment::NewLine, exp, System::Environment::NewLine ) );
fileOpened = false;
}
Invalidate();
closeMenuItem->Enabled = fileOpened;
}
// Cancel button was pressed.
else
// Cancel button was pressed.
if ( result == ::DialogResult::Cancel )
{
return;
}
}
// Close the current file.
void closeMenuItem_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
richTextBox1->Text = "";
fileOpened = false;
closeMenuItem->Enabled = false;
}
// Bring up a dialog to chose a folder path in which to open/save a file.
void folderMenuItem_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Show the FolderBrowserDialog.
System::Windows::Forms::DialogResult result = folderBrowserDialog1->ShowDialog();
if ( result == ::DialogResult::OK )
{
folderName = folderBrowserDialog1->SelectedPath;
if ( !fileOpened )
{
// No file is opened, bring up openFileDialog in selected path.
openFileDialog1->InitialDirectory = folderName;
openFileDialog1->FileName = nullptr;
openMenuItem->PerformClick();
}
}
}
};
// The main entry point for the application.
int main()
{
Application::Run( gcnew FolderBrowserDialogExampleForm );
}
// The following example displays an application that provides the ability to
// open rich text files (rtf) into the RichTextBox. The example demonstrates
// using the FolderBrowserDialog to set the default directory for opening files.
// The OpenFileDialog class is used to open the file.
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
public class FolderBrowserDialogExampleForm : System.Windows.Forms.Form
{
private FolderBrowserDialog folderBrowserDialog1;
private OpenFileDialog openFileDialog1;
private RichTextBox richTextBox1;
private MenuStrip mainMenu1;
private ToolStripMenuItem fileMenuItem, openMenuItem;
private ToolStripMenuItem folderMenuItem, closeMenuItem;
private string openFileName, folderName;
private bool fileOpened = false;
// The main entry point for the application.
[STAThreadAttribute]
static void Main()
{
Application.Run(new FolderBrowserDialogExampleForm());
}
// Constructor.
public FolderBrowserDialogExampleForm()
{
this.mainMenu1 = new MenuStrip();
this.fileMenuItem = new ToolStripMenuItem();
this.openMenuItem = new ToolStripMenuItem();
this.folderMenuItem = new ToolStripMenuItem();
this.closeMenuItem = new ToolStripMenuItem();
this.openFileDialog1 = new OpenFileDialog();
this.folderBrowserDialog1 = new FolderBrowserDialog();
this.richTextBox1 = new RichTextBox();
this.mainMenu1.Items.Add(this.fileMenuItem);
this.fileMenuItem.Text = "File";
this.fileMenuItem.DropDownItems.AddRange(
new ToolStripItem[] {
this.openMenuItem,
this.closeMenuItem,
this.folderMenuItem
}
);
this.openMenuItem.Text = "Open...";
this.openMenuItem.Click += new EventHandler(this.openMenuItem_Click);
this.folderMenuItem.Text = "Select Directory...";
this.folderMenuItem.Click += new EventHandler(this.folderMenuItem_Click);
this.closeMenuItem.Text = "Close";
this.closeMenuItem.Click += new EventHandler(this.closeMenuItem_Click);
this.closeMenuItem.Enabled = false;
this.openFileDialog1.DefaultExt = "rtf";
this.openFileDialog1.Filter = "rtf files (*.rtf)|*.rtf";
// Set the help text description for the FolderBrowserDialog.
this.folderBrowserDialog1.Description =
"Select the directory that you want to use as the default.";
// Do not allow the user to create new files via the FolderBrowserDialog.
this.folderBrowserDialog1.ShowNewFolderButton = false;
// Default to the My Documents folder.
this.folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal;
this.richTextBox1.AcceptsTab = true;
this.richTextBox1.Location = new System.Drawing.Point(8, 40);
this.richTextBox1.Size = new System.Drawing.Size(280, 312);
this.richTextBox1.Anchor = (
AnchorStyles.Top |
AnchorStyles.Left |
AnchorStyles.Bottom |
AnchorStyles.Right
);
this.ClientSize = new System.Drawing.Size(296, 360);
this.Controls.Add(this.mainMenu1);
this.Controls.Add(this.richTextBox1);
this.MainMenuStrip = this.mainMenu1;
this.Text = "RTF Document Browser";
}
// Bring up a dialog to open a file.
private void openMenuItem_Click(object sender, EventArgs e)
{
// If a file is not opened, then set the initial directory to the
// FolderBrowserDialog.SelectedPath value.
if (!fileOpened) {
openFileDialog1.InitialDirectory = folderBrowserDialog1.SelectedPath;
openFileDialog1.FileName = null;
}
// Display the openFile dialog.
DialogResult result = openFileDialog1.ShowDialog();
// OK button was pressed.
if (result == DialogResult.OK)
{
openFileName = openFileDialog1.FileName;
try
{
// Output the requested file in richTextBox1.
Stream s = openFileDialog1.OpenFile();
richTextBox1.LoadFile(s, RichTextBoxStreamType.RichText);
s.Close();
fileOpened = true;
}
catch (Exception exp)
{
MessageBox.Show("An error occurred while attempting to load the file. The error is:"
+ System.Environment.NewLine + exp.ToString() + System.Environment.NewLine);
fileOpened = false;
}
Invalidate();
closeMenuItem.Enabled = fileOpened;
}
// Cancel button was pressed.
else if (result == DialogResult.Cancel)
{
return;
}
}
// Close the current file.
private void closeMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Text = "";
fileOpened = false;
closeMenuItem.Enabled = false;
}
// Bring up a dialog to choose a folder path in which to open or save a file.
private void folderMenuItem_Click(object sender, EventArgs e)
{
// Show the FolderBrowserDialog.
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
folderName = folderBrowserDialog1.SelectedPath;
if (!fileOpened)
{
// No file is opened, bring up openFileDialog in selected path.
openFileDialog1.InitialDirectory = folderName;
openFileDialog1.FileName = null;
openMenuItem.PerformClick();
}
}
}
}
' The following example displays an application that provides the ability to
' open rich text files (rtf) into the RichTextBox. The example demonstrates
' using the FolderBrowserDialog to set the default directory for opening files.
' The OpenFileDialog class is used to open the file.
Imports System.Drawing
Imports System.Windows.Forms
Imports System.IO
Public Class FolderBrowserDialogExampleForm
Inherits Form
Private folderBrowserDialog1 As FolderBrowserDialog
Private openFileDialog1 As OpenFileDialog
Private richTextBox1 As RichTextBox
Private mainMenu1 As MainMenu
Private fileMenuItem As MenuItem
Private WithEvents folderMenuItem As MenuItem, _
closeMenuItem As MenuItem, _
openMenuItem As MenuItem
Private openFileName As String, folderName As String
Private fileOpened As Boolean = False
Public Sub New()
Me.mainMenu1 = New System.Windows.Forms.MainMenu()
Me.fileMenuItem = New System.Windows.Forms.MenuItem()
Me.openMenuItem = New System.Windows.Forms.MenuItem()
Me.folderMenuItem = New System.Windows.Forms.MenuItem()
Me.closeMenuItem = New System.Windows.Forms.MenuItem()
Me.openFileDialog1 = New System.Windows.Forms.OpenFileDialog()
Me.folderBrowserDialog1 = New System.Windows.Forms.FolderBrowserDialog()
Me.richTextBox1 = New System.Windows.Forms.RichTextBox()
Me.mainMenu1.MenuItems.Add(Me.fileMenuItem)
Me.fileMenuItem.MenuItems.AddRange( _
New System.Windows.Forms.MenuItem() {Me.openMenuItem, _
Me.closeMenuItem, _
Me.folderMenuItem})
Me.fileMenuItem.Text = "File"
Me.openMenuItem.Text = "Open..."
Me.folderMenuItem.Text = "Select Directory..."
Me.closeMenuItem.Text = "Close"
Me.closeMenuItem.Enabled = False
Me.openFileDialog1.DefaultExt = "rtf"
Me.openFileDialog1.Filter = "rtf files (*.rtf)|*.rtf"
' Set the Help text description for the FolderBrowserDialog.
Me.folderBrowserDialog1.Description = _
"Select the directory that you want to use As the default."
' Do not allow the user to create New files via the FolderBrowserDialog.
Me.folderBrowserDialog1.ShowNewFolderButton = False
' Default to the My Documents folder.
Me.folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal
Me.richTextBox1.AcceptsTab = True
Me.richTextBox1.Location = New System.Drawing.Point(8, 8)
Me.richTextBox1.Size = New System.Drawing.Size(280, 344)
Me.richTextBox1.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or _
AnchorStyles.Bottom Or AnchorStyles.Right
Me.ClientSize = New System.Drawing.Size(296, 360)
Me.Controls.Add(Me.richTextBox1)
Me.Menu = Me.mainMenu1
Me.Text = "RTF Document Browser"
End Sub
<STAThread()> _
Shared Sub Main()
Application.Run(New FolderBrowserDialogExampleForm())
End Sub
' Bring up a dialog to open a file.
Private Sub openMenuItem_Click(sender As object, e As System.EventArgs) _
Handles openMenuItem.Click
' If a file is not opened, then set the initial directory to the
' FolderBrowserDialog.SelectedPath value.
If (not fileOpened) Then
openFileDialog1.InitialDirectory = folderBrowserDialog1.SelectedPath
openFileDialog1.FileName = nothing
End If
' Display the openFile dialog.
Dim result As DialogResult = openFileDialog1.ShowDialog()
' OK button was pressed.
If (result = DialogResult.OK) Then
openFileName = openFileDialog1.FileName
Try
' Output the requested file in richTextBox1.
Dim s As Stream = openFileDialog1.OpenFile()
richTextBox1.LoadFile(s, RichTextBoxStreamType.RichText)
s.Close()
fileOpened = True
Catch exp As Exception
MessageBox.Show("An error occurred while attempting to load the file. The error is:" _
+ System.Environment.NewLine + exp.ToString() + System.Environment.NewLine)
fileOpened = False
End Try
Invalidate()
closeMenuItem.Enabled = fileOpened
' Cancel button was pressed.
ElseIf (result = DialogResult.Cancel) Then
return
End If
End Sub
' Close the current file.
Private Sub closeMenuItem_Click(sender As object, e As System.EventArgs) _
Handles closeMenuItem.Click
richTextBox1.Text = ""
fileOpened = False
closeMenuItem.Enabled = False
End Sub
' Bring up a dialog to chose a folder path in which to open or save a file.
Private Sub folderMenuItem_Click(sender As object, e As System.EventArgs) _
Handles folderMenuItem.Click
' Show the FolderBrowserDialog.
Dim result As DialogResult = folderBrowserDialog1.ShowDialog()
If ( result = DialogResult.OK ) Then
folderName = folderBrowserDialog1.SelectedPath
If (not fileOpened) Then
' No file is opened, bring up openFileDialog in selected path.
openFileDialog1.InitialDirectory = folderName
openFileDialog1.FileName = nothing
openMenuItem.PerformClick()
End If
End If
End Sub
End Class
備註
這個類別提供一種方式,可提示用戶流覽、建立及最終選取資料夾。 當您只想要允許使用者選取資料夾,而非檔案時,請使用這個類別。 瀏覽資料夾會透過樹狀結構控件來完成。 在 .NET Core 3.1 和更新版本中,這個類別會使用現代化文件系統瀏覽器視窗。 只能選取檔案系統中的資料夾;虛擬資料夾無法。
一般而言,建立新的 FolderBrowserDialog之後,您會將 設定 RootFolder 為開始流覽的位置。 您可以選擇性地將 設定 SelectedPath 為一開始要選取之子資料夾 RootFolder 的絕對路徑。 您也可以選擇性地設定 Description 屬性,以提供其他指示給使用者。 最後,呼叫 ShowDialog 方法來向用戶顯示對話方塊。 當對話框關閉且對話框的結果 ShowDialog 為 DialogResult.OK時, SelectedPath 會是包含所選資料夾路徑的字串。
您可以使用 ShowNewFolderButton 屬性來控制使用者是否可以使用 [ 新增資料夾 ] 按鈕建立新資料夾。
FolderBrowserDialog 是強制回應對話框;因此,顯示時,它會封鎖應用程式的其餘部分,直到使用者選擇資料夾為止。 當對話框以強制模式顯示時,除了對話框上的物件以外,沒有輸入 (鍵盤或滑鼠按兩下) 。 程式必須隱藏或關閉對話框 (通常會回應某些用戶動作) ,才能輸入呼叫程式。
建構函式
FolderBrowserDialog() |
初始化 FolderBrowserDialog 類別的新執行個體。 |
屬性
AddToRecent |
取得或設定值,指出對話框是否會將選取的資料夾新增至最近的清單。 |
AutoUpgradeEnabled |
取得或設定值,指出是否會自動升級對話方塊以啟用新功能。 |
CanRaiseEvents |
取得值,指出元件是否能引發事件。 (繼承來源 Component) |
ClientGuid |
取得或設定要與此對話方塊狀態相關聯的 GUID。 通常,如上次瀏覽的資料夾,以及對話方塊的位置及大小等狀態,會根據可執行檔的名稱來保存。 透過指定 GUID,應用程式便可以針對相同應用程式內不同版本的對話方塊 (例如匯入對話方塊與開啟對話方塊) 具有不同的保存狀態。 在應用程式未使用視覺效果樣式,或是 AutoUpgradeEnabled 已設定為 |
Container |
取得包含 IContainer 的 Component。 (繼承來源 Component) |
Description |
取得或設定對話框上方所顯示的描述性文字。 |
DesignMode |
取得值,指出 Component 目前是否處於設計模式。 (繼承來源 Component) |
Events |
取得附加在這個 Component 上的事件處理常式清單。 (繼承來源 Component) |
InitialDirectory |
取得或設定資料夾瀏覽器對話框所顯示的初始目錄。 |
Multiselect |
取得或設定值,指出對話框是否允許選取多個資料夾。 |
OkRequiresInteraction |
取得或設定值,指出是否停用對話方塊的 [確定] 按鈕,直到使用者巡覽檢視或編輯檔名 (,如果適用的話) 。 |
RootFolder |
取得或設定開始瀏覽的根資料夾。 |
SelectedPath |
取得或設定使用者所選取的路徑。 |
SelectedPaths |
取得對話框中所有選取資料夾的路徑。 |
ShowHiddenFiles |
取得或設定值,指出對話框是否顯示隱藏和系統檔案。 |
ShowNewFolderButton |
取得或設定值,指出是否在資料夾瀏覽器對話方塊中顯示 [新增資料夾] 按鈕。 |
ShowPinnedPlaces |
取得或設定值,指出是否顯示檢視表格中預設顯示的專案。 |
Site | (繼承來源 Component) |
Tag |
取得或設定包含控制項相關資料的物件。 (繼承來源 CommonDialog) |
UseDescriptionForTitle |
取得或設定值,指出是否要使用 Description 屬性的值作為 Vista 樣式對話方塊的對話方塊標題。 這個屬性並不會影響舊樣式對話方塊。 |
方法
事件
Disposed |
當 Dispose() 方法的呼叫處置元件時,就會發生。 (繼承來源 Component) |
HelpRequest |
發生於使用者按一下對話方塊上的 [說明] 按鈕時。 |