主要用如下的一个小例子,说明C#窗体中文件选择对话框OpenFileDialog与下列列表ComboBox的应用,点击“选择文件”按钮,就可以打开文件选择对话框OpenFileDialog,无论是多选文件与单选文件,都能够将选择的内容添加到下列列表ComboBox之中。同时,一开始,下列列表ComboBox是“无”的状态,在文件选择对话框OpenFileDialog选择的文件夹由于Windows本身的规定,会自动剔除。
基本布局如下,如同《【C#】简单窗体程序,判断是否闰年,禁止窗体调整大小,关闭窗体前的判断 》(点击打开链接)利用工具栏上的对齐工具讲各个组件摆好,同时将各个组件的Text改好,Form1的最大化按钮去掉,FormBorderStyle改成FixedDialog,不可调整大小的状态。下列列表ComboBox的DropDownStyle改成DropDownList,这种只选择不输入的状态。
之后双击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;//显示扩展名 } } }