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# 프로그램은 사용자가 폴더를 선택하고 확인을 누르면 폴더 대화 상자를 열고 무언가를 출력합니다. 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