C# 打开文件对话框控件OpenFileDialog

摘要


OpenFileDialog 是一个预先配置的 Windows 窗体组件,它可以让用户选择要打开的文件。与 Windows 操作系统公开的“打开文件”对话框相同,它使用 CommonDialog 类进行实现。OpenFileDialog 的用途非常广泛,它可以在 Windows 应用程序中被用于选择文本文件、图片文件、音频文件、视频文件等多种类型的文件。

在使用 OpenFileDialog 组件时,开发者需要考虑以下几个方面:

  1. 文件类型过滤器的设置:用户可以通过对话框中的过滤器列表选择要打开的文件类型。开发者需要设置合适的过滤器列表,以便用户能够方便地选择所需的文件类型。
  2. 默认文件名的设置:用户选择的文件名需要能够反映所选文件的实际内容。开发者可以设置默认文件名,也可以允许用户自定义文件名。
  3. 对话框的显示位置和样式:开发者可以通过设置 InitialDirectoryFilterFilterIndex 等属性来控制对话框的外观和行为。此外,开发者还可以设置对话框的显示位置,以便在用户选择文件时提供更好的用户体验。

OpenFileDialog 组件是一个非常有用的工具,可以帮助开发者轻松地实现文件选择功能。在开发过程中,开发者需要认真考虑对话框的设计和实现,以确保用户能够方便地选择所需的文件类型。

正文


  • InitialDirectory:设置对话框的初始目录。
  • Filter: 要在对话框中显示的文件筛选器,例如,"文本文件(.txt)|.txt|所有文件(.)||."。
  • FilterIndex: 在对话框中选择的文件筛选器的索引,如果选第一项就设为1。
  • RestoreDirectory: 控制对话框在关闭之前是否恢复当前目录。
  • FileName:第一个在对话框中显示的文件或最后一个选取的文件。
  • Title:将显示在对话框标题栏中的名称。
  • Multiselect:设置打开对话框可以多选。

界面设计

image.png

点击打开文件,能过对话框选取相应文件

image.png

读取相应文件信息

image.png
private void btnOpen_Click(object sender, EventArgs e)
{
    //定义一个文件打开控件
    OpenFileDialog ofd = new OpenFileDialog();
    //设置打开对话框的初始目录,默认目录为exe运行文件所在的路径
    ofd.InitialDirectory = Application.StartupPath;
    //设置打开对话框的标题
    ofd.Title = "请选择要打开的文件";
    //设置打开对话框可以多选
    ofd.Multiselect = true;
    //设置对话框打开的文件类型
    ofd.Filter = "文本文件|*.txt|音频文件|*.wav|图片文件|*.jpg|所有文件|*.*";
    //设置文件对话框当前选定的筛选器的索引
    ofd.FilterIndex = 2;
    //设置对话框是否记忆之前打开的目录
    ofd.RestoreDirectory = true;
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        //获取用户选择的文件完整路径
        string filePath = ofd.FileName;
        //获取对话框中所选文件的文件名和扩展名,文件名不包括路径
        string fileName = ofd.SafeFileName;

        txtLog.AppendText("用户选择的文件目录为:" + filePath+System.Environment.NewLine);

        txtLog.AppendText("用户选择的文件名称为:" + fileName + System.Environment.NewLine);
        txtLog.AppendText("**************选中文件的内容**************");
        using (FileStream fsRead = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read))
        {
            //定义二进制数组
            byte[] buffer = new byte[1024 * 1024 * 5];
            //从流中读取字节
            int r = fsRead.Read(buffer, 0, buffer.Length);
            txtLog.AppendText(Encoding.Default.GetString(buffer, 0, r) + System.Environment.NewLine);
        }
    }
}

版权声明:
作者:cc
链接:https://www.techfm.club/p/192669.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>