C# OpenFileDialog打开文件对话框

父类

父类是 FileDialog

父类的属性、方法,详见:
https://www.malaoshi.top/show_1GWixWFqGAt.html

属性

  • Filter: 获取或设置当前文件名筛选器字符串,例如,文本文件(*.txt)|*.txt|所有文件(*.*)||*.*
  • Multiselect:为true表示允许选择多个文件
  • ValidateNames:验证用户输入是否是一个有效的Windows文件名
  • CheckFileExists:验证文件是否存在,不存在提示下面创建:
  • CheckPathExists:验证路径是否存在

其他属性

  • InitialDirectory:对话框的初始目录
  • FilterIndex 在对话框中选择的文件筛选器的索引,如果选第一项就设为1
  • RestoreDirectory 控制对话框在关闭之前是否恢复当前目录
  • FileName:第一个在对话框中显示的文件或最后一个选取的文件
  • Title 将显示在对话框标题栏中的字符
  • AddExtension 是否自动添加默认扩展名
  • DefaultExt 默认扩展名
  • DereferenceLinks 在从对话框返回前是否取消引用快捷方式
  • ShowHelp 启用”帮助”按钮
  • ValiDateNames 控制对话框检查文件名中是否不含有无效的字符或序列

文件名

  • FileName:获取选定的文件名(包含全路径);设置选定的文件

  • FileNames:当 Multiselect 为 true,通过该属性获取所有选定的文件名

  • SafeFileName:获取选定对话框中的文件名和扩展名。文件名不包含路径

  • SafeFileNames:当 Multiselect 为 true,获取所有选定的文件名和扩展名。文件名不包含路径

常用事件

  • FileOk:当用户点击”打开”或”保存”按钮时要处理的事件

例子:打开一个文件

private void openFileDialogBTN_Click(object sender, System.EventArgs e)
{
    OpenFileDialog openFileDialog=new OpenFileDialog();
    openFileDialog.InitialDirectory="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("");
    }
}

例子:打开word文档

打开 .docx 文件

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "word文档(*.docx)|*.docx";
ofd.Multiselect = true;
ofd.ValidateNames = true; // 验证用户输入是否是一个有效的Windows文件名
ofd.CheckFileExists = true; //验证路径的有效性
ofd.CheckPathExists = true;//验证路径的有效性
if (ofd.ShowDialog() == DialogResult.OK) //用户点击确认按钮,发送确认消息
{
    //FileNames 获取在文件对话框中选定的所有文件
    foreach (var fileName in ofd.FileNames)
    {
        //System.Diagnostics.Trace.WriteLine(fileName);
        if (!fileLstBx.Items.Contains(fileName))
        {
            fileLstBx.Items.Add(fileName);
        }

    }

}

过滤

一行过滤,一个过滤,支持多个后缀(推荐)

描述和扩展名由 | 间隔

OpenFileDialog ofd = new OpenFileDialog();

ofd.Filter = "常见文档|*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.pdf;*.txt|" +
"Word文档|*.doc;*.docx|"+
"Excel文档|*.xls;*.xlsx|"+
"PPT文档|*.ppt;*.pptx";

一行过滤,多个过滤

描述和扩展名由 | 间隔

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "word文档(*.docx),pdf文档(*.pdf),文本文件(*.txt)|*.docx;*.pdf;*.txt"

多条过滤

多个过滤也是由 | 间隔

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "word文档(*.docx),pdf文档(*.pdf),文本文件(*.txt)|*.docx;*.pdf;*.txt|"
"word文档(*.doc),word文档(*.docx)|*.doc;*.docx;";

参考:
https://www.cnblogs.com/tinaluo/p/6636073.html
https://blog.csdn.net/weixin_44448313/article/details/102820439