如何在wpf中实现文件夹选择功能

如何在wpf中实现文件夹选择功能,第1张

WPF中实现点击 . . . 按钮后选择文件夹作为主目录功能;亲测有用

(下图是我用WPF做的FTP服务器和FTP上传下载器的一部分)

// 选择文件

private void btnSelectRootDirect_Click(object sender, RoutedEventArgs e)

{

    System.Windows.Forms.FolderBrowserDialog openFileDialog = 

                                   new System.Windows.Forms.FolderBrowserDialog()

    /*注意,FolderBrowserDialog前面的命名空间不能删除,此处一定要手动引入

    System.Window.Forms空间,否则你使用默认的DialogResult会发现没有OK属性*/

    if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)

    {

        txtFtpRoot.Text = openFileDialog.SelectedPath

    }

}

注意:在wpf中手动引入System.Window.Forms时报错,原因如下

在C# Winform窗体应用中默认引入System.Window.Forms,

但是wpf中没有没有默认引入System.Window.Forms;需要添加引用

解决方案:项目右侧--解决资源管理器---引用---右键--添加引用---在.NET下拉框找---找到System.Windows.Forms---点击确定然后--vs的菜单栏第五个--生成----重新生成解决方案--就可以了。

注意:此时如果程序中包含MessageBox,则引入System.Windows.Forms时MessageBox会报错(因为System.Windows和System.Windows.Forms两个命名空间下都有MessageBox类,如果不指明该类是哪个空间下的,程序就会摸不着头脑),改为System.Windows.MessageBox即可

详见代码和注释:

System.Windows.Forms.OpenFileDialog openFile = new System.Windows.Forms.OpenFileDialog()

openFile.CheckFileExists = true//检查文件是否存在

openFile.CheckPathExists = true//检查路径是否存在

openFile.Multiselect = true//是否允许多选,false表示单选

openFile.InitialDirectory = "C:\\"//设置打开时的默认路径,我这里设置为C盘根目录

string filter = "txt,doc"

filter = filter.TrimEnd(',')

if (filter.Equals(""))

{

    filter = "*"

}

filter = filter.Replace(",", "*.")

filter = "*." + filter

openFile.Filter = "Txt files (" + filter + ")|" + filter + "|All files (*.*)|*.*"//这里设置的是文件过滤器,比如选了txt文件,那别的文件就看不到了

if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)//打开文件选择器,并按下选择按钮

{

    String[] names = openFile.FileNames

    String message = "已选择的文件如下:\r\n"

    for (int i = 0 i < names.length i++)

    {

        message += names + "\r\n"

    }

    MessageBox.show(message)

}

另外,你说不能多选,这个多选时要按住Ctrl才能选中多个文件,或者按住鼠标左键滑动以选定多个目标才行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11724609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存