winform布局如下图:
获取文件夹按钮,通过FolderBrowserDialog对话框,选择本地电脑文件路径,后台代码实现如下:
private void button1_Click(object sender, EventArgs e) { folderBrowserDialog1.Description = "请选择需要保存的路径"; folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop; folderBrowserDialog1.ShowNewFolderButton = true; if (folderBrowserDialog1.SelectedPath.Length > 0) { folderBrowserDialog1.SelectedPath = textBox1.Text; } if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = folderBrowserDialog1.SelectedPath; } } 1. 首先,设置文件夹浏览对话框的描述信息、根目录和是否允许新建文件夹。 2. 如果文本框中有路径,则将其设置为文件夹浏览对话框的默认路径。 3. 显示文件夹浏览对话框,并等待用户选择文件夹路径。 4. 如果用户选择了路径,则将其设置为文本框中的路径。 总体来说,这段代码的作用是为用户提供一个选择文件夹路径的界面,并将用户选择的路径显示在文本框中,以便后续使用。
开始之前先熟悉两个常用的文件Dialog控件
FolderBrowserDialog控件
FolderBrowserDialog是一个我们并不常用的控件或者对象,但是当你只需要获取文件夹路径时,可以考虑使用。
接下来我们主要通过代码介绍FolderBrowserDialog控件的四个常见属性。
//创建一个FolderBrowserDialog对象 FolderBrowserDialog FBDialog = new FolderBrowserDialog();
- description:可以在对话框提供说明,描述,提醒等信息
FBDialog.Description = "请选择包含img格式的文件夹";
- RootFolder:可以设置对话框启动时候的根目录,主要为C盘里的文件夹,Desktop代表桌面
FBDialog.RootFolder = Environment.SpecialFolder.Desktop;
- ShowNewFolderButton:是否在对话框设置“新建文件夹”按钮
FBDialog.ShowNewFolderButton = true;
- SelectedPath:比较重要的属性,它是获取你选择的文件夹的路径,当然我们也可以记住每次需要打开的路径,可以避免每次都从桌面打开。
//开始我们在btn_click()事件外定义一个空的字符串defaultfilePath if (defaultfilePath != string.Empty) { //判断defaultfilePath是否为空,defaultfilePath不为空就可以直接赋值给SelectedPath,每次打开都可以到之前选择的位置 FBDialog.SelectedPath = defaultfilePath; } if (FBDialog.ShowDialog() == DialogResult.OK) { //空就默认从桌面出发,然后获取点击的路径 defaultfilePath = FBDialog.SelectedPath; }
- 完整代码
namespace FoldBrowserDialog { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string defaultfilePath = string.Empty; private FolderBrowserDialog FBDialog; private void button1_Click(object sender, EventArgs e) { //新建一个FolderBrowserDialog对象 FBDialog = new FolderBrowserDialog(); /* * 下面介绍FolderBrowserDialog四个比较重要的属性或方法 */ //1、description属性,可以在对话框提供说明、描述、提醒等信息 FBDialog.Description = "请选择包含img格式的文件夹"; //2、RootFolder属性,可以设置对话框启动时的根目录,主要为C盘里的文件夹 //下面Desktop默认打开桌面 FBDialog.RootFolder = Environment.SpecialFolder.Desktop; //3、ShowNewFloderButton属性,是否在对话框中设置”新建文件夹“按钮 FBDialog.ShowNewFolderButton = true; //4、selectedPath属性,比较重要的属性,它是获取你选择的文件夹的路径,当然 //我们也可以记住我们每次需要打开的路径,可以避免每次都从桌面开始便利 //开始我们在btn_click()事件外定义一个空的字符串defaultfilePath if (defaultfilePath != string.Empty) { //判断defaultfilePath是否为空,defaultfilePath不为空就可以直接赋值给SelectedPath,每次打开都可以到之前选择的位置 FBDialog.SelectedPath = defaultfilePath; } if (FBDialog.ShowDialog() == DialogResult.OK) { //空就默认从桌面出发,然后获取点击的路径 defaultfilePath = FBDialog.SelectedPath; } } } }
- 示例1:默认打开指定文件夹之后再选择文件夹
namespace FoldBrowserDialog { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string defaultfilePath = string.Empty; private FolderBrowserDialog FBDialog; private void button1_Click(object sender, EventArgs e) { //新建一个FolderBrowserDialog对象 FBDialog = new FolderBrowserDialog(); /* * 下面介绍FolderBrowserDialog四个比较重要的属性或方法 */ //1、description属性,可以在对话框提供说明、描述、提醒等信息 FBDialog.Description = "请选择包含img格式的文件夹"; //2、RootFolder属性,可以设置对话框启动时的根目录,主要为C盘里的文件夹 //下面Desktop默认打开桌面 FBDialog.RootFolder = Environment.SpecialFolder.Desktop; //3、ShowNewFloderButton属性,是否在对话框中设置”新建文件夹“按钮 FBDialog.ShowNewFolderButton = true; //4、selectedPath属性,比较重要的属性,它是获取你选择的文件夹的路径,当然 //我们也可以记住我们每次需要打开的路径,可以避免每次都从桌面开始便利 //开始我们在btn_click()事件外定义一个空的字符串defaultfilePath if (defaultfilePath != string.Empty) { //判断defaultfilePath是否为空,defaultfilePath不为空就可以直接赋值给SelectedPath,每次打开都可以到之前选择的位置 FBDialog.SelectedPath = defaultfilePath; } if (FBDialog.ShowDialog() == DialogResult.OK) { //空就默认从桌面出发,然后获取点击的路径 defaultfilePath = FBDialog.SelectedPath; } } } }
- 示例2:显示文件夹目录
namespace FoldBrowserDialog { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string defaultfilePath = string.Empty; private FolderBrowserDialog FBDialog; private void button1_Click(object sender, EventArgs e) { //新建一个FolderBrowserDialog对象 FBDialog = new FolderBrowserDialog(); /* * 下面介绍FolderBrowserDialog四个比较重要的属性或方法 */ //1、description属性,可以在对话框提供说明、描述、提醒等信息 FBDialog.Description = "请选择包含img格式的文件夹"; //2、RootFolder属性,可以设置对话框启动时的根目录,主要为C盘里的文件夹 //下面Desktop默认打开桌面 FBDialog.RootFolder = Environment.SpecialFolder.Desktop; //3、ShowNewFloderButton属性,是否在对话框中设置”新建文件夹“按钮 FBDialog.ShowNewFolderButton = true; //4、selectedPath属性,比较重要的属性,它是获取你选择的文件夹的路径,当然 //我们也可以记住我们每次需要打开的路径,可以避免每次都从桌面开始便利 //开始我们在btn_click()事件外定义一个空的字符串defaultfilePath if (defaultfilePath != string.Empty) { //判断defaultfilePath是否为空,defaultfilePath不为空就可以直接赋值给SelectedPath,每次打开都可以到之前选择的位置 FBDialog.SelectedPath = defaultfilePath; } if (FBDialog.ShowDialog() == DialogResult.OK) { //空就默认从桌面出发,然后获取点击的路径 defaultfilePath = FBDialog.SelectedPath; } } } }
OpenFileDialog控件基本用法
OpenFileDialog控件的基本属性
- InitialDirectory:对话框的初始目录
- Filter:获取或设置当前文件名筛选器字符串,例如:"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"
- FilterIndex:在对话框中选择的文件筛选器的索引,如果选第一项就设为1
- RestoreDirectory控制对话框在关闭之前是否恢复当前目录
- FileName:第一个在对话框中显示的文件或最后一个选取的文件
- Title 将显示在对话框标题栏中的字符
- AddExtension是否自动添加默认扩展名
- CheckPathExists在对话框返回之前,检查指定路径是否存在
- DefaultExt默认扩展名
- DereferenceLinks 在从对话框返回前是否取消引用快捷方式
- ShowHelp 启用"帮助"按钮
- ValiDateNames 控制对话框检查文件名中是否不含有无效的字符或序列
OpenFileDialog控件有以下常用事件
FileOk 当用户点击"打开"或"保存"按钮时要处理的事件
HelpRequest 当用户点击"帮助"按钮时要处理的事件
下面用代码来实现上面的对话框
private void openFileDialogBTN_Click(object sender, System.EventArgs e) { OpenFileDialog openFileDialog=new OpenFileDialog(); openFileDialog.InitialDirectory="c:\\";//注意这里写路径时要用c:\\而不是c:\ openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*"; openFileDialog.RestoreDirectory=true; openFileDialog.FilterIndex=1; if (openFileDialog.ShowDialog()==DialogResult.OK) { fName=openFileDialog.FileName; File fileOpen=new File(fName); isFileHaveName=true; richTextBox1.Text=fileOpen.ReadFile(); richTextBox1.AppendText(""); } }
获取对话框的文件名
openfiledialog.FileName //获取或设置一个包含在文件对话框中选定的文件名字符串
openfiledialog.SafeFileName //获取选定对话框中的文件名和扩展名
回归正题(利用OpenFileDialog来浏览图片,并切换图片)
废话少说,直接上按钮“选择图片”的click代码
private void button3_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); //实例OpenFileDialog openFileDialog.Filter = "图片文件(*.jpg;*.png;*.jpeg;*.gif;*.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp"; //筛选需要的文件 openFileDialog.RestoreDirectory = true; openFileDialog.InitialDirectory = Environment.SpecialFolder.Desktop.ToString(); if (openFileDialog.ShowDialog() == DialogResult.OK) { if (openFileDialog.FileName != null) { pictureBox1.ImageLocation = openFileDialog.FileName; //选中的图片显示在控件上 list.Clear(); pictureDirctoryPath = Path.GetDirectoryName(openFileDialog.FileName);//获取文件所在的目录 this.GetFilesArry(pictureDirctoryPath);//读取文件夹内的文件,并依次赋值路径到list中 picturePage = list.IndexOf($"{openFileDialog.FileName}"); } else { pictureBox1.ImageLocation = null; } } }
1. 首先创建了一个打开文件对话框对象openFileDialog,设置了文件过滤器,初始目录等属性。
2. 判断用户是否选择了文件,如果选择了则判断选择的文件是否为空,如果不为空则将选中的图片显示在pictureBox1控件上。
3. 清空list列表,获取选中图片所在的目录,并调用GetFilesArry()方法读取目录内的所有文件,将文件路径依次添加到list列表中。
4. 计算选中图片在list中的索引位置,赋值给picturePage变量,方便后面翻页时调用。
5. 如果选择的文件为空,则pictureBox1控件显示空。
声明一个存储文件的List,照片索引picturePageIndex
List<string> list = new List<string>();
int picturePage = -1;
GetFilesArry方法代码如下:
public void GetFilesArry(string filePath) { DirectoryInfo dirInfo = new DirectoryInfo(filePath); foreach (var item in dirInfo.GetFiles()) { string type = item.Extension.ToLower(); if (type.Equals(".jpg") || type.Equals(".gif") || type.Equals(".jpge") || type.Equals(".png")) { list.Add(item.FullName); } } }
1. 首先传入一个文件路径,使用DirectoryInfo类创建一个文件夹对象dirInfo。
2. 使用foreach循环遍历文件夹中的所有文件,使用GetFiles()方法获取文件数组。
3. 对于每一个文件,获取其文件类型的小写形式,判断是否是图片文件(.jpg、.gif、.jpge、.png)。
4. 如果是图片文件,将其完整路径添加到一个字符串列表list中。
按钮“上一张”代码如下:
private void button4_Click(object sender, EventArgs e) { if (picturePage == -1) { MessageBox.Show("请选择图片文件夹", "图片选择提示", MessageBoxButtons.OK); return; } if (picturePage == 0) { MessageBox.Show("已经是第一张照片", "图片选择提示", MessageBoxButtons.OK); } else { picturePage--; //pictureBox1.ImageLocation = dt.Rows[picturePage][0].ToString(); pictureBox1.ImageLocation = list[picturePage]; } }
按钮“下一张”代码如下
private void button5_Click(object sender, EventArgs e) { if (picturePage == -1) { MessageBox.Show("请选择图片文件夹", "图片选择提示", MessageBoxButtons.OK); return; } if (picturePage + 1 < list.Count) { picturePage++; pictureBox1.ImageLocation = list[picturePage]; } else { MessageBox.Show("已经是最后一张照片", "图片选择提示", MessageBoxButtons.OK); } }
运行效果如下图:
“下一张”切换效果:
标签:路径,对话框,FBDialog,defaultfilePath,FolderBrowserdDialog,文件夹,OpenFileDialog,FolderBr From: https://www.cnblogs.com/davisdabing/p/17809845.html