在 C# 中開啟資料夾對話方塊

Syed Hassan Sabeeh Kazmi 2023年10月12日
  1. 使用 C# 中的 FolderBrowserDialog 類開啟資料夾對話方塊
  2. 使用 C# 中的 OpenFileDialog 類開啟資料夾對話方塊
在 C# 中開啟資料夾對話方塊

在 C# 應用程式中,在選擇檔案時與使用者進行互動是一個基本且必修的話題。在本教程中,你將學習在 C# 中開啟資料夾對話方塊的兩種不同方法。

在 Winforms 中開發 C# 專案時,處理資料夾瀏覽器和開啟檔案對話方塊以選擇檔案和資料夾很重要。

資料夾對話方塊是 Windows API 的一部分,可供 Windows 平臺上的 C# 開發人員訪問。第一種方法是使用 OpenFileDialog 類來顯示用於開啟一個或多個檔案的資料夾對話方塊。

另一種方法是使用 FolderBrowserDialog 控制元件顯示一個資料夾對話方塊,用於從同一目錄中選擇資料夾。

使用 C# 中的 FolderBrowserDialog 類開啟資料夾對話方塊

此類用於開啟對話方塊資料夾以瀏覽和選擇計算機上的資料夾。它具有類似 Windows 資源管理器的功能,可以瀏覽資料夾並選擇資料夾。

FolderBrowserDialog 類沒有或不需要像其他的視覺屬性。它是 .Net 框架的一部分,併為你的 C# 應用程式提供資料夾瀏覽器元件。

Visual Studio 中的以下 C# 程式將開啟一個資料夾對話方塊並在使用者選擇一個資料夾並按下 OK 時輸出一些內容。在執行 C# 程式碼之前,在 Visual Studio 中建立一個 Form1.cs [Design] 和一個 button1 按鈕。

using System;
using System.Data;
using System.Linq;
using System.Drawing;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;

namespace openFolderDialog {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    // `button1` button click event to open folder dialog
    private void button1_Click(object sender, EventArgs e) {
      FolderBrowserDialog fbd = new FolderBrowserDialog();
      if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        // shows the path to the selected folder in the folder dialog
        MessageBox.Show(fbd.SelectedPath);
    }
  }
}

雖然 FolderBrowserDialog 是一種在 C# 中開啟資料夾對話方塊的便捷方式,但它存在許多限制,有些限制了該元件在應用程式中的實際使用。

它具有強大的行為控制和自定義功能,遠遠領先於 Windows 資源管理器。

使用 C# 中的 OpenFileDialog 類開啟資料夾對話方塊

在 C# 中,OpenFileDialog 控制元件是最容易啟動 Windows 開啟檔案對話方塊並讓它們選擇同一目錄中的檔案的方法。開啟檔案對話方塊的主要目的是為不同的過程選擇單個或多個檔案,例如在 C# 中上傳和下載檔案。

using System;
using System.Data;
using System.Linq;
using System.Drawing;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;

namespace OpenFileDialogBox_CS {

  // create `Form1.cs [Design]`in Visual Studio

  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    // create  a `btnSelect` button in Form1.cs [Design] and use its name in C# code

    private void btnSelect_Click(object sender, EventArgs e) {
      openFileDialog1.Multiselect = false;
      if (openFileDialog1.ShowDialog() == DialogResult.OK) {
        string fileName = Path.GetFileName(openFileDialog1.FileName);
        string filePath = openFileDialog1.FileName;
        MessageBox.Show(fileName + " - " + filePath);
      }
    }

    // create a `btnSelectMultiple` button in Form1.cs [Design] and use its name in C# code

    private void btnSelectMultiple_Click(object sender, EventArgs e) {
      string message = "";
      openFileDialog1.Multiselect = true;
      if (openFileDialog1.ShowDialog() == DialogResult.OK) {
        foreach (string file in openFileDialog1.FileNames) {
          message += Path.GetFileName(file) + " - " + file + Environment.NewLine;
        }
        MessageBox.Show(message);
      }
    }
  }
}

使用 OpenFileDialog,可以使用其 Filter 屬性僅顯示具有特定副檔名的檔案。

openFileDialog1.Filter = "Image Files|*.GIF;*.BMP;*.JPEG;*.PNG;*.JPG|All files (*.*)|*.*";

使用以下 C# 程式碼使 OpenFileDialog 類在特定資料夾中啟動資料夾對話方塊。

openFileDialog1.InitialDirectory = "c:\\temp";

在 C# 中開啟資料夾對話方塊的兩種方法都很簡單,並且支援大量功能庫和其他元素,可以根據你的需要自定義開啟資料夾對話方塊。此外,這兩種方法都使你能夠完全自定義開啟的資料夾對話方塊元素及其屬性。

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub