C#使用FolderBrowserDialog类实现选择打开文件夹方法详解
1.在c#中使用folderbrowserdialog类,就可以实现选择文件夹的功能,并将所选择的的文件夹路径记录下来。
(1).首先先引入命名空间system.windows.forms;
(2).然后在应用程序的主入口点,也就是static void main()方法上面加上[stathread]属性;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[stathread]
static void main()
{
application.enablevisualstyles();
application.setcompatibletextrenderingdefault(false);
application.run(new form1());
}
(3).然后定义我们的事件触发;
private void button1_click(object sender, eventargs e)
{
folderbrowserdialog dilog = new folderbrowserdialog();
dilog.description = "请选择文件夹";
if(dilog.showdialog() == dialogresult.ok || dilog.showdialog() == dialogresult.yes)
{
path=dilog.selectedpath;
}
}
(4).打开刚才我们所选择的文件夹;
private void button2_click(object sender, eventargs e)
{
if (!string.isnullorempty(path))
{
system.diagnostics.process.start("explorer.exe", path);
}
else
{
messagebox.show("请选择路径");
}
}
以上就完成了,选择文件夹的功能。
2.需要注意的是在程序的入口点出,需要添加[stathread]属性,当然也可以不添加这个属性,但是需要开启另外一个线程来处理。代码如下所示:
private void button1_click(object sender, eventargs e)
{
thread newthread = new thread(new threadstart(test));
newthread.setapartmentstate(apartmentstate.sta);
newthread.start();
//或
//thread app = new thread(new parameterizedthreadstart(test));//两个test方法不一样,委托类型不一样
//app.apartmentstate = apartmentstate.sta;
//app.start();
}
private void test(object obj)
{
folderbrowserdialog dilog = new folderbrowserdialog();
dilog.description = "请选择文件夹";
if(dilog.showdialog() == dialogresult.ok)
{
path=dilog.selectedpath;
}
}
private void test()
{
folderbrowserdialog dilog = new folderbrowserdialog();
dilog.description = "请选择文件夹";
if (dilog.showdialog() == dialogresult.ok)
{
path = dilog.selectedpath;
}
}