C# WINFORM 编程中,选择**文件夹**而不是文件的方法

我们选择文件可以用 OpenFileDialog,但是文件夹有两种方法。

法一:

用C#的FolderNameEditor类的子类FolderBrowser类来实现获取浏览文件夹对话框的功能。下面来看看具体是怎么实现的。

 首先新建一个winform的项目,再新建一个类文件(File->AddNewItem->Class)。 因为FolderNameEditor是在System.Windows.Forms.Design命名空间下的,此命名空间位于动态链接库system.design.dll,所以我们要先在解决方案中添加新的引用(reference)System.Design。然后在代码中添加:

  using System.Windows.Forms.Design;

  接着,我们新建一个FolderDialog类,此类从FolderNameEditor类继承,在此类中新建一个FolderBrowser类的实例。DisplayDialog(string description)函数用于设置实例fDialog的属性,并且显示浏览文件夹对话框。为了取得文件夹的路径,设置一个Path属性,返回选取文件夹的路径。

C#语言: FolderDialog

01 using System;

02 using System.Collections.Generic;

03 using System.Linq;

04 using System.Text;

05 using System.Windows.Forms.Design;

06 using System.Windows.Forms;

07

08 namespace lnk

09 {

10 class FolderDialog : FolderNameEditor

11 {

12 FolderBrowser fDialog = new FolderBrowser();

13 public FolderDialog()

14 {

15 }

16 public DialogResult DisplayDialog()

17 {

18 return DisplayDialog("确定你的文件夹路径!!");

19 }

20 public DialogResult DisplayDialog(string description)

21 {

22 fDialog.Description = description;

23 return fDialog.ShowDialog();

24 }

25 public string Path

26 {

27 get

28 {

29 return fDialog.DirectoryPath;

30 }

31 }

32 ~FolderDialog()

33 {

34 fDialog.Dispose();

35 }

36

37 }

38 }

法二:

工具栏里面有一个FolderBrowserDialog控件,在winform中添加FolderBrowserDialog控件。然后在添加一个按钮。和一个label标签。

双击按钮添加代码

FolderBrowserDialog.ShowDialog();

label1.Text = BrowserDialog.SelectedPath;

然后运行!

此时点击按钮。就会弹出对话框。提示用户选择文件夹。选好后确定。用户选的地址就显示在了label中了!

参考代码:

private void button1_Click(object sender, EventArgs e)

{

FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();

folderBrowserDialog1.Description = "请选择保存输出图件的文件夹";

folderBrowserDialog1.ShowNewFolderButton = true;

folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal;

DialogResult result = folderBrowserDialog1.ShowDialog();

if (result == DialogResult.OK)

{

string folderName = folderBrowserDialog1.SelectedPath;

if (folderName!="")

{

textBox1.Text = folderName;

}

}

}