다음을 통해 공유


FileDialog 클래스

파일을 선택할 수 있는 대화 상자를 표시합니다.

네임스페이스: System.Windows.Forms
어셈블리: System.Windows.Forms(system.windows.forms.dll)

구문

‘선언
Public MustInherit Class FileDialog
    Inherits CommonDialog
‘사용 방법
Dim instance As FileDialog
public abstract class FileDialog : CommonDialog
public ref class FileDialog abstract : public CommonDialog
public abstract class FileDialog extends CommonDialog
public abstract class FileDialog extends CommonDialog

설명

FileDialogOpenFileDialogSaveFileDialog 클래스의 공통적인 동작이 포함된 추상 클래스입니다. 이 클래스는 직접 사용할 수는 없지만 이러한 두 클래스에 공통적인 동작을 포함합니다. FileDialog의 인스턴스는 만들 수 없습니다. 이 클래스는 공용으로 선언되기는 하지만 내부 추상 메서드가 포함되어 있으므로 이 클래스에서 상속할 수 없습니다. 파일을 선택하거나 저장할 대화 상자를 만들려면 OpenFileDialog 또는 SaveFileDialog를 사용합니다.

FileDialog는 모달 대화 상자이므로 이 대화 상자가 표시되면 파일을 선택할 때까지 나머지 응용 프로그램을 사용할 수 없습니다. 모달 대화 상자가 표시되면 대화 상자의 개체를 제외한 아무런 입력 작업(키보드 또는 마우스 클릭)도 수행할 수 없습니다. 프로그램은 일반적으로 호출 프로그램에 대한 입력이 발생하기 전에 일부 사용자 동작에 대한 응답으로 대화 상자를 숨기거나 닫아야 합니다.

경고

OpenFileDialogSaveFileDialog와 같이 FileDialog에서 파생된 클래스를 사용하는 경우에는 절대 경로가 들어 있는 문자열 리터럴은 사용하지 않는 것이 좋습니다. 대신 다음 표에 설명된 기술을 하나 이상 사용하여 경로를 동적으로 얻습니다.

응용 프로그램의 형식, 해당 응용 프로그램과 연결된 데이터의 저장 방법 및 파일 시스템에 액세스하는 이유에 따라 여러 가지 방법으로 디렉터리 경로를 만들 수 있습니다. 다음 표에서는 경로를 동적으로 만드는 기술을 보여 줍니다.

경로 또는 프로그램 범주

사용할 클래스 및 멤버

표준 Windows 경로(예: Program Files, MyDocuments, 바탕 화면 등)

System.Environment 클래스는 Environment.SpecialFolder 열거형 값 중 하나를 사용하여 SystemDirectory와 같은 정적 메서드나 GetFolderPath 메서드를 통해 이러한 경로를 만드는 데 사용할 수 있는 가장 완벽한 소스입니다.

현재 응용 프로그램과 관련된 경로

Application 클래스에는 StartupPath, ExecutablePath, LocalUserAppDataPathCommonAppDataPath 등의 특정 경로를 얻기 위한 정적 멤버가 있습니다.

System.IO.PathGetTempPath 메서드는 임시 폴더의 경로를 반환합니다.

System.IO.Directory 클래스의 GetCurrentDirectory 메서드는 응용 프로그램의 현재 실행 디렉터리를 반환합니다.

DriveInfo 클래스의 RootDirectory 속성은 지정된 드라이브의 루트 디렉터리를 나타냅니다.

응용 프로그램 설정으로 저장된 경로

ApplicationSettingsBase에서 파생된 래퍼 클래스의 해당 응용 프로그램 설정 속성에 액세스합니다. 자세한 내용은 Windows Forms에 대한 응용 프로그램 설정을 참조하십시오.

레지스트리 저장소

일부 응용 프로그램에서는 레지스트리에 디렉터리 정보를 저장합니다. Application 클래스에는 RegistryKey 값으로 확인되는 CommonAppDataPathLocalUserAppDataPath 속성이 있습니다.

ClickOnce 응용 프로그램

ClickOnce 응용 프로그램의 경우 UserAppDataPath와 같은 Application 클래스 멤버를 사용합니다. 그러면 ClickOnce 데이터 디렉터리에 대한 포인터가 반환됩니다. 자세한 내용은 ClickOnce 응용 프로그램의 로컬 및 원격 데이터 액세스를 참조하십시오.

국가별 응용 프로그램

국가별 응용 프로그램의 경우 System.Resources.ResourceReader 클래스를 사용하여 해당 응용 프로그램의 문자열 리소스에서 상대 경로 부분을 검색합니다. 전역화 및 지역화에 대한 자세한 내용은 인코딩 및 지역화 항목을 참조하십시오.

설명된 기술을 하나 이상 사용하여 전체 경로를 만들 수 있습니다. 예를 들어, GetFolderPath 메서드를 사용하여 MyDocuments 폴더의 경로를 얻은 다음 응용 프로그램 설정을 사용하여 상대 하위 디렉터리 부분을 추가할 수 있습니다.

System.IO.Path 클래스에는 절대 및 상대 경로 문자열 조작을 지원하는 정적 멤버가 들어 있는 반면 System.IO.FileSystem.IO.Directory 클래스에는 각각 파일과 디렉터리를 실제로 조작하는 정적 멤버가 들어 있습니다.

예제

다음 코드 예제에서는 FileDialogOpenFileDialog 구현을 사용하고 대화 상자의 만들기, 속성 설정 및 표시 방법을 보여 줍니다. 이 예제에서는 ShowDialog 메서드를 사용하여 대화 상자를 표시하고 DialogResult를 반환합니다. 이 예제를 실행하려면 Button이 포함되어 있고 System.IO 네임스페이스가 추가된 폼이 있어야 합니다.

Private Sub button1_Click(sender As Object, e As System.EventArgs)
    Dim myStream As Stream
    Dim openFileDialog1 As New OpenFileDialog()
       
    openFileDialog1.InitialDirectory = "c:\"
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    openFileDialog1.FilterIndex = 2
    openFileDialog1.RestoreDirectory = True
       
    If openFileDialog1.ShowDialog() = DialogResult.OK Then
        myStream = openFileDialog1.OpenFile()
        If Not (myStream Is Nothing) Then
            ' Insert code to read the stream here.
            myStream.Close()
        End If
    End If
End Sub
private void button1_Click(object sender, System.EventArgs e)
{
    Stream myStream;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        if((myStream = openFileDialog1.OpenFile())!= null)
        {
            // Insert code to read the stream here.
            myStream.Close();
        }
    }
}
private:
   void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      Stream^ myStream;
      OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;

      openFileDialog1->InitialDirectory = "c:\\";
      openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
      openFileDialog1->FilterIndex = 2;
      openFileDialog1->RestoreDirectory = true;

      if ( openFileDialog1->ShowDialog() == ::DialogResult::OK )
      {
         if ( (myStream = openFileDialog1->OpenFile()) != nullptr )
         {
            // Insert code to read the stream here.
            myStream->Close();
         }
      }
   }
protected void button1_Click(Object sender, System.EventArgs e)
{
    Stream myStream;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.set_InitialDirectory("c:\\");
    openFileDialog1.set_Filter(
        "txt files (*.txt)|*.txt|All files (*.*)|*.*");
    openFileDialog1.set_FilterIndex(2);
    openFileDialog1.set_RestoreDirectory(true);
    if (openFileDialog1.ShowDialog().Equals(get_DialogResult().OK)) {
        if ((myStream = openFileDialog1.OpenFile()) != null) {
            // Insert code to read the stream here.
            myStream.Close();
        }
    }
} //button1_Click

상속 계층 구조

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Windows.Forms.CommonDialog
        System.Windows.Forms.FileDialog
           System.Windows.Forms.OpenFileDialog
           System.Windows.Forms.SaveFileDialog

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

FileDialog 멤버
System.Windows.Forms 네임스페이스
CommonDialog 클래스
OpenFileDialog
SaveFileDialog
System.IO.Path
System.IO.File
System.IO.Directory
System.Environment
Application 클래스
Microsoft.Win32.Registry
System.Resources.ResourceReader