用C#语言在VS2010 WPF中编写的选择文件和选择文件夹的问题及其解决方案
2012-11-26 16:55
302 查看
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 路径)删除,示例如下:
这些只是我个人在遇到这个问题时解决过程中的经验总结,如果大家有什么疑问,欢迎和我交流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
如题:写一个选择文件的功能时,添加一个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
相关文章推荐
- [WPF]多Resource文件的相互引用与合并问题及其解决方案
- wpf 运行权限 解决不能写文件 创建文件夹问题
- C# 获取文件夹及其子文件夹下的所有文件
- Sandcastle Help File Builder(.NET帮助文档工具)的版本选择心得——支持VS2010至VS2015,高版本项目文件问题
- Resource文件的相互引用与合并问题及其解决方案
- 在C#中选择文件夹与文件的方法
- C#下载文件时候弹出选择文件夹保存目录的代码
- (WPF) 文件和文件夹选择对话框。
- 使用C#选择文件夹、打开文件夹、选择文件
- C#编写dll库文件并注册为COM组件供其他语言(如PHP等)调用
- C#winform 选择的文件是解决方案文件,但是用此应用程序的较新版本创建的,无法打开(低版本的VS无法打开高版本项目)
- C#语言实现创建、删除和移动文件夹及其文件夹列表功能
- C# 选择文件夹 选择文件
- C# 002 浏览(或叫:选择)、打开 文件和文件夹(或叫:目录)
- 如何用c#打开文件夹并选择文件夹内的一个文件 open folder and select file
- C#选择文件 文件夹
- 0420 测试记录 gcc 编译时 库文件 头文件问题及其解决方案
- 取消vs2010选中打开的文件自动展开解决方案文件夹
- C# 下载 解压 选择文件夹 保存文件 删除目录下文件及文件夹
- C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?