首页 > 其他分享 >获取图片并进行图片切换(FolderBrowserdDialog and OpenFileDialog用法)

获取图片并进行图片切换(FolderBrowserdDialog and OpenFileDialog用法)

时间:2023-11-05 13:45:44浏览次数:28  
标签:路径 对话框 FBDialog defaultfilePath FolderBrowserdDialog 文件夹 OpenFileDialog FolderBr

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

相关文章

  • 数字人+背景图片+音频生成一段视频是如何实现的?
    要实现数字人、背景图片和音频生成一段视频,可以按照以下步骤进行操作:创建数字人模型:使用数字化人技术,可以创建一个虚拟的人物模型。这可以通过使用动画软件或游戏引擎来实现。你可以设计和定制数字人的外观、动作和表情等。准备背景图片:选择适合场景的背景图片,可以是静态的图片或一......
  • Affinity Photo - 颠覆传统,图片编辑不再复杂
    AffinityPhoto,一款专业且易于使用的图片编辑软件,帮助用户将创意转化为触手可及的现实。通过这款软件,你可以进行各种复杂的图片编辑任务,从基础的裁剪和调整到高级的色彩校正和合成,所有的功能都触手可及,无需复杂的操作流程。→→↓↓载AffinityPhotomac/win版这款软件不仅提供......
  • 图片有水印怎么去?这三招轻松去除图片水印
    当我们在网站找一些的图片做头像或者壁纸的时候,会发现一些好看的图片上会带有一些平台水印,这些水印影响了整张照片的美观,那么图片有水印怎么去呢?这时就需要借用图片处理工具来操作。那你们知道图片有水印怎么去吗?今天我就来手把手教你们几个去水印的操作方法,大家有需要的话,可以跟......
  • 使用Faraday库采集微博图片
    之前我们写过一个微博采集程序,不是特别难,那么有朋友想让我用Faraday库来写一个微博的爬虫程序,还要用Ruby来采集微博的图片。果然,不费吹灰之力,它来了,一起来学习一下吧。```rubyrequire'faraday'require'nokogiri'proxy_host='https://www.duoip.cn/get_proxy'proxy_port=8......
  • 如何使用HtmlUnit库采集天猫图片
    天猫阿里旗下一个优秀的购物平台,很多刚开始接触电商的朋友都一天猫为变准,用心打造自己的商品宝贝,天猫上面很多商家的精美图片也是我们用以效仿的好范本。今天我就用HtmlUnit库写一个用于采集天猫商品图片的爬虫,希望能对刚刚接触电商的朋友有所帮助。```javaimportcom.gargoylesof......
  • 利用HtmlAgilityPack库采集美图秀秀图片
    上次有个美女跟我说美图秀秀官网的图片都好漂亮,既然美女都开口了,我能说什么呢?于是,我就用HtmlAgilityPack库写了一个C#爬虫程序,专门来采集美图秀秀的图片,看着网站挺复杂,不过这个爬虫写起来倒是一点也不难,这就给大家分享。```csharpusingSystem;usingSystem.Net;usingHtmlAgili......
  • 图片预览功能实现,放大缩小(el-image-viewer)
    <template><div><divv-for="(item,index)inlist":key="index"class="box"><img:src="item"alt=""@click="onPreview(item)"/></div&......
  • vue图片上传视频
    图片上传是现在Web开发中常见的需求之一。而使用Vue框架可以使得这一过程更加方便和有效。在Vue中使用预先开发好的组件,可以快速地实现图片上传功能。//在Vue组件中引用插件importVueUploadComponentfrom'vue-upload-component'//在模板中引用组件上面的代码使用VueUplo......
  • 来看看这你还不知道图片去水印的方法吧
    随着互联网的发展,现在用图片已经成了我们生活中必不可少的事情。不管是做生意设计,还是自己创作,甚至在社交媒体上,我们总是要用到各种图片,但问题是我们常常会碰到的——图片上的水印,水印可能会让图片看起来不那么好看也不太适合用,还可能影响到它的价值,所以有很多人都在找图片去水......
  • CKeditor5实现图片上传
    //2019-3-27更新,最初发在这里只是记录一下CKeditor5的发布,当时的版本还是 1.0.0-alpha.1,截止今日,已经更新为 v12.0.0,之前的一些方法已经不太兼容,特更新如下,希望能帮助到大家。CKeditor5相比CKeditor4更轻量级,可以按需定制很灵活,CKeditor5是彻头彻尾的重写,支持移动端、......