Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 629|回复: 0

用C#语言在VS2010 WPF中编写的选择文件和选择文件夹的问题及其解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-6-22 16:03:29 | 显示全部楼层 |阅读模式

    1.选择文件对话框

    如题:写一个选择文件的功能时,添加一个textbox和一个Button,textbox的name为textBox1,Button的name为button1,然后在设计界面,双击Button,添加代码如下:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
    Microsoft.Win32.OpenFileDialog fileDialog1 = new Microsoft.Win32.OpenFileDialog();
    fileDialog1.InitialDirectory = "d:\\";//初始目录
    fileDialog1.Filter = "yuv files (*.yuv)|*.yuv";//文件的类型
    fileDialog1.FilterIndex = 1;
    fileDialog1.RestoreDirectory = true;
    if (fileDialog1.ShowDialog() == true)
    {
    textBox1.Text = fileDialog1.FileName;
    str1 = fileDialog1.FileName;
    }
    else
    {
    textBox1.Text = "";

    }

    这样就可以选择文件了,文件的类型什么的可以自己在上面添加,如上代码,或者如下:

    openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*";

     

    2.选择文件夹对话框

    有时我们需要选择的不是文件,而是文件夹,那么就要换一个方法了,通常在一个forms里,用FolderBrowserDialog就行了,但是WPF程序却无法使用这个类,此时我们可以通过添加引用来使用它,在项目上单击右键,选择“添加引用”,选择System.Windows.Forms即可,此时可以把这个命名空间导入,如果不导入就用如下代码:

            private void button4_Click(object sender, RoutedEventArgs e)
    {
    System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
    folderBrowserDialog1.Description = "请选择图片所在的文件夹";
    folderBrowserDialog1.ShowNewFolderButton = true;
    folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal;
    System.Windows.Forms.DialogResult result = folderBrowserDialog1.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK)
    {
    string folderName = folderBrowserDialog1.SelectedPath;
    if (folderName != "")
    {
    textBox1.Text = folderName;
    }
    }

            }

    这其中有些类在使用时注意添加前面所属的命名空间,

    比如这一句:

    if (result == System.Windows.Forms.DialogResult.OK),我之前在很多网页里看到的都是

    if (result == DialogResult.OK)   如果是这样,在OK这里就会报错,什么不能比较什么的,其实就是类的使用不当而已。

    另外,如果要复制一个文件到另外一个文件夹,可以用file.copy(string 源文件,string目的文件)命令,但是file.copy(string 路径)不能覆盖同名文件,这时可以用file.delete(string 路径)删除,示例如下:

                if (str1 != folderName)
                {
                    if (System.IO.File.Exists(folderName + "\\the encrypted image.jpg"))
                    {
                        System.IO.File.Delete(folderName + "\\the encrypted image.jpg");
    
                    }
                    System.IO.File.Copy(str1 + "\\the encrypted image.jpg", folderName + "\\the encrypted image.jpg");
                }

     

    这些只是我个人在遇到这个问题时解决过程中的经验总结,如果大家有什么疑问,欢迎和我交流O(∩_∩)O~

    另外还可以自己做个选择文件的控件,详情见参考文献2,题目是“WPF:详解创建Lookless自定义控件——文件选择控件”,这篇文章的代码我试过,可以使用,使用的时候记得把“FileSelector.cs”和“Themes”文件夹添加到工程中。作者看起来是个牛人,还是90后,自愧不如,已加关注。

     

    参考文献:1.http://hi.baidu.com/blues_master/item/5cec6fa96deaec9f15107395

    2.http://www.cnblogs.com/mgen/archive/2012/01/10/2318269.html

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-20 18:37 , Processed in 0.072579 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表