【C#】文件选择对话框OpenFileDialog与下列列表ComboBox

主要用如下的一个小例子,说明C#窗体中文件选择对话框OpenFileDialog与下列列表ComboBox的应用,点击“选择文件”按钮,就可以打开文件选择对话框OpenFileDialog,无论是多选文件与单选文件,都能够将选择的内容添加到下列列表ComboBox之中。同时,一开始,下列列表ComboBox是“无”的状态,在文件选择对话框OpenFileDialog选择的文件夹由于Windows本身的规定,会自动剔除。

【C#】文件选择对话框OpenFileDialog与下列列表ComboBox_第1张图片

基本布局如下,如同《【C#】简单窗体程序,判断是否闰年,禁止窗体调整大小,关闭窗体前的判断 》(点击打开链接)利用工具栏上的对齐工具讲各个组件摆好,同时将各个组件的Text改好,Form1的最大化按钮去掉,FormBorderStyle改成FixedDialog,不可调整大小的状态。下列列表ComboBox的DropDownStyle改成DropDownList,这种只选择不输入的状态。

【C#】文件选择对话框OpenFileDialog与下列列表ComboBox_第2张图片

之后双击Combobox与Button为下列列表的改变与按钮的点击添加事件,Form1具体代码如下。在Form1初始化的时候,先对Combobox进行初始化,加一个“无”的项上去,更加美观。之后,点击按钮,新建一个文件选择对话框OpenFileDialog,这个对话框默认是单选文件状态,我们要设置其为多选,如果选择了文件,先清空ComboBox,之后,被多选化的OpenFileDialog,会将打开的文件全路径保存到一个字符串数组OpenFileDialog.FileNames当中,第一个选择的文件路径,则放到OpenFileDialog.FileName当中,如果你要再进一步操作文件可以参考《【C#】利用System.IO中的File类中的ReadAllText与WriteAllText输入输出小文件》(点击打开链接)。

最后,Combobox的变更与OpenFileDialog的选择完成同样,要获取文件的具体的文件名、扩展名,则要进一步对文件路径进行切割,OpenFileDialog的选择完成还好,可以利用OpenFileDialog.SafeFileName;直接获取选择第一个文件的文件名。而,Combobox则全程要利用Substring进行字符串的切割,C#的Substring与Java不同,Java的Substring的字符串是结束位置,C#则是取从第一个参数开始的位置之后的X个字符的意思。也没什么,注意一下就是。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;//使用的文件分隔符这个常量const

namespace FileChoose
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;//设置Form窗体初始化放在屏幕中间  
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
            openFileDialog1.Multiselect = true;
            if (openFileDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了文件
            {
                comboBox1.Items.Clear();//清除之前打开的历史
                foreach (string s in openFileDialog1.FileNames)
                {
                    comboBox1.Items.Add(s);
                }
                comboBox1.SelectedIndex = 0;
                string file_path = openFileDialog1.FileName;//记录选择的文件全路径
                string file_dir = file_path.Substring(0, file_path.LastIndexOf(Path.DirectorySeparatorChar) + 1);//获取文件目录                  
                string file_name = openFileDialog1.SafeFileName;//获取文件名
                string file_exc = file_name.Substring(file_name.LastIndexOf("."), file_name.Length - file_name.LastIndexOf(".")); //获取文件扩展名       
                label1.Text = "文件路径:" + file_dir;//显示文件目录
                label2.Text = "文件名称:" + file_name;//显示文件名
                label3.Text = "文件扩展名:" + file_exc;//显示扩展名
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Items.Add("无");
            comboBox1.SelectedIndex = 0;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string file_path = comboBox1.Text;//虽然combobox1为只选择不输入的状态,但是这样就能够直接获取到combobox1的内容
            string file_dir = file_path.Substring(0, file_path.LastIndexOf(Path.DirectorySeparatorChar) + 1);//获取文件路径
            string file_name = file_path.Substring(file_path.LastIndexOf(Path.DirectorySeparatorChar) + 1, file_path.Length - file_path.LastIndexOf(Path.DirectorySeparatorChar) - 1);
            string file_exc = file_name.Substring(file_name.LastIndexOf("."), file_name.Length - file_name.LastIndexOf(".")); //获取文件扩展名       
            label1.Text = "文件路径:" + file_dir;//显示文件目录
            label2.Text = "文件名称:" + file_name;//显示文件名
            label3.Text = "文件扩展名:" + file_exc;//显示扩展名
        }
    }
}


你可能感兴趣的:(C#,substring,combobox,窗体,openFileDialog)