C# でフォルダダイアログを開く

Syed Hassan Sabeeh Kazmi 2023年10月12日
  1. C# の FolderBrowserDialog クラスを使用してフォルダダイアログを開く
  2. C# の OpenFileDialog クラスを使用してフォルダダイアログを開く
C# でフォルダダイアログを開く

C# アプリケーションでは、ファイルの選択に関するユーザーとの対話は、基本的かつ必須のトピックです。このチュートリアルでは、C# でフォルダダイアログを開く 2つの異なる方法を学習します。

Winforms で C# プロジェクトを開発するときは、フォルダブラウザとファイルダイアログを開いてファイルとフォルダを選択することが重要です。

フォルダダイアログは WindowsAPI の一部であり、Windows プラットフォームの C# 開発者がアクセスできます。最初の方法は、OpenFileDialog クラスを使用して、1つまたは複数のファイルを開くためのフォルダーダイアログを表示することです。

もう 1つの方法は、FolderBrowserDialog コントロールを使用して、同じディレクトリからフォルダを選択するためのフォルダダイアログを表示することです。

C# の FolderBrowserDialog クラスを使用してフォルダダイアログを開く

このクラスは、コンピューター上のフォルダーを参照および選択するためのダイアログフォルダーを開くのに役立ちます。フォルダ間を移動してフォルダを選択するための Windows エクスプローラのような機能があります。

FolderBrowserDialog クラスには、他のクラスのような視覚的プロパティがないか、必要ありません。これは .Net フレームワークの一部であり、C# アプリケーション用のフォルダーブラウザコンポーネントを提供します。

Visual Studio の次の C# プログラムは、ユーザーがフォルダーを選択して OK を押すと、フォルダーダイアログを開き、何かを出力します。C# コードを実行する前に、VisualStudio で 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# でフォルダダイアログを開くための便利な方法ですが、多くの制限があり、コンポーネントをアプリケーションで実際に使用できない場合があります。

これは、WindowsExplorer よりもはるかに優れた強力な動作制御およびカスタマイズ機能を備えています。

C# の OpenFileDialog クラスを使用してフォルダダイアログを開く

C# では、OpenFileDialog コントロールが Windows Open File Dialog を起動し、同じディレクトリ内のファイルを選択できるようにするのが最も簡単です。Open File Dialog の主な目的は、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