【愚公系列】2023年11月 Winform控件专题 OpenFileDialog控件详解

举报
愚公搬代码 发表于 2023/11/26 23:40:47 2023/11/26
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。

🚀一、OpenFileDialog控件详解

OpenFileDialog是Windows Forms中的一个控件,用于打开文件选择框。它可以让用户选择一个或多个文件,并返回选择的文件路径。

在Visual Studio中添加OpenFileDialog控件,可以通过工具箱中的“对话框”部分找到它,然后拖动它到您的窗体中。

接下来,您可以使用以下代码来处理OpenFileDialog控件的选择:

using System;
using System.IO;
using System.Windows.Forms;

namespace WinFormsApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                string fileText = File.ReadAllText(filePath);
                MessageBox.Show(fileText);
            }
        }
    }
}

在这里插入图片描述

在上面的代码中,当用户单击按钮时,会打开一个OpenFileDialog控件。如果用户选择了一个文件并单击“确定”按钮,则会将文件文本内容显示在一个MessageBox中。Filter属性可以帮助您过滤文件类型,只显示您指定的文件类型。

🔎1.属性介绍

🦋1.1 AddExtension

AddExtension属性是OpenFileDialog控件中一个布尔类型属性,用于指定当用户输入文件名时,是否自动为文件名添加当前筛选器的默认扩展名。如果设置为true,则如果用户没有提供文件扩展名,则文件扩展名将根据所选筛选器自动添加。如果设置为false,则不添加扩展名。

以下是一个示例:

using System;
using System.IO;
using System.Windows.Forms;

namespace WinFormsApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
            openFileDialog.AddExtension = true; // 设置AddExtension属性为true
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                string fileText = File.ReadAllText(filePath);
                MessageBox.Show(fileText);
            }
        }
    }
}

在上面的例子中,当用户选择文件时,如果没有提供文件扩展名,则会自动添加扩展名,因为AddExtension属性被设置为true。如果设置为false,则不会自动添加扩展名,用户需要手动输入文件扩展名,否则会出现保存错误。

🦋1.2 AutoUpgradeEnabled

AutoUpgradeEnabled属性用于指示文件对话框是否自动升级到较新版本。当这个属性设置为true时,如果用户的计算机上安装了较新版本的操作系统,文件对话框将自动升级到较新版本。否则,将使用旧版本的文件对话框。

以下是使用AutoUpgradeEnabled属性的示例代码:

OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.AutoUpgradeEnabled = true;
//其他设置属性

需要注意的是,AutoUpgradeEnabled属性仅在Windows Vista或更高版本的操作系统上有效。如果你的应用程序需要支持早期版本的Windows操作系统(如Windows XP),则应该避免使用此属性。

🦋1.3 CheckFileExists、CheckPathExists

CheckFileExists属性表示打开文件对话框后,当用户选择一个文件时,会检查该文件是否存在,若不存在则弹出提示框。

CheckPathExists属性表示打开文件对话框后,当用户选择一个文件夹时,会检查该文件夹是否存在,若不存在则弹出提示框。

使用方式:

在设计视图中选择OpenFileDialog控件,然后在属性窗口中找到CheckFileExists和CheckPathExists属性,将它们设为true即可启用。例如:

OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.CheckFileExists = true;
openFileDialog1.CheckPathExists = true;

需要注意的是,如果CheckFileExists属性设为false,但用户却选择了一个不存在的文件,则该文件路径仍会返回。因此,使用OpenFileDialog控件时,建议将CheckFileExists属性设为true,以保证文件存在性。

🦋1.4 FileName、FileNames

FileName和FileNames属性用于获取用户选择的文件名或文件名数组。

  • FileName属性:获取或设置用户选择的单个文件的文件名。例如,若用户选择了一个名为“test.txt”的文件,则此属性将返回“test.txt”字符串。
  • FileNames属性:获取或设置用户选择的多个文件的文件名。例如,若用户选择了三个文件“test1.txt”,“test2.txt”和“test3.txt”,则此属性将返回一个字符串数组,其中包含这三个文件的文件名。

使用示例:

OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = @"C:\";
openFileDialog1.Title = "选择文件";
openFileDialog1.Multiselect = true;
openFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    string[] fileNames = openFileDialog1.FileNames;
    foreach (string fileName in fileNames)
    {
        Console.WriteLine(fileName);
    }
}

以上代码中设置了初始目录、标题、多选和文件筛选条件等属性,并在用户选择文件之后,将选择的文件名打印出来。如果用户只选择了一个文件,则可以通过FileName属性获取文件名。

🦋1.5 Filter、FilterIndex

Filter属性和FilterIndex属性是非常有用的属性。

Filter属性指定了在文件对话框中显示的文件类型过滤器,如下所示:

openFileDialog1.Filter = "文本文件|*.txt|所有文件|*.*";

上述代码指定了两个过滤器,分别是“文本文件”和“所有文件”,多个过滤器之间用竖线“|”隔开。在打开文件对话框时,只有这些过滤器中指定的文件类型才会被显示出来,其它的文件类型则被过滤掉。

FilterIndex属性指定了在文件类型过滤器中默认选中的类型的索引,如下所示:

openFileDialog1.FilterIndex = 1;

上述代码指定了默认选中的文件类型过滤器为索引为1的“文本文件”选项。

当用户打开文件对话框时,只有被指定的文件类型过滤器和默认选中的文件类型才会被显示出来,这能帮助用户更快速地找到需要的文件。

🦋1.6 InitialDirectory

可以使用OpenFileDialog控件的InitialDirectory属性来设置对话框默认打开的目录。以下是一个简单的示例代码:

using System.Windows.Forms;

//...

OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = @"C:\Users\Public\Documents";
openFileDialog.ShowDialog();

//...

在上面的示例中,通过将InitialDirectory属性设置为@"C:\Users\Public\Documents",对话框将默认打开该目录。

您还可以使用Environment.SpecialFolder枚举中的常量来设置InitialDirectory属性。例如:

using System.Windows.Forms;
using System.Environment;

//...

OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = GetFolderPath(SpecialFolder.MyDocuments);
openFileDialog.ShowDialog();

//...

在上面的示例中,使用了Environment类的GetFolderPath方法来获取“我的文档”文件夹的路径,并将其设置为InitialDirectory属性的值。

🦋1.7 Multiselect

Multiselect属性可以允许用户在选择文件时选择多个文件。当设置为true时,用户可以使用Ctrl键或Shift键选择多个文件,然后点击"打开"按钮,所有选中的文件路径都会存储在OpenFileDialog控件的FileNames属性中。在代码中,您可以使用FileNames属性来访问每个选定的文件的路径。

以下是一个示例:

OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    foreach (string file in openFileDialog1.FileNames)
    {
        // 处理每个选中的文件
    }
}

🦋1.8 ShowReadOnly、ReadOnlyChecked、ShowHelp

  1. ShowReadOnly属性:用于控制文件选择对话框中是否显示只读属性的文件。当ShowReadOnly属性为true时,文件选择对话框中将显示只读属性的文件;当ShowReadOnly属性为false时,文件选择对话框中将不显示只读属性的文件。

  2. ReadOnlyChecked属性:用于控制文件选择对话框中只读属性的选择状态。当ReadOnlyChecked属性为true时,只读属性的复选框被选中;当ReadOnlyChecked属性为false时,只读属性的复选框未选中。

  3. ShowHelp属性:用于控制文件选择对话框中是否显示帮助按钮。当ShowHelp属性为true时,文件选择对话框中将显示帮助按钮;当ShowHelp属性为false时,文件选择对话框中将不显示帮助按钮。

这三个属性都是在使用OpenFileDialog控件时,通过设置控件的属性来控制文件选择对话框的显示方式。例如:

// 创建OpenFileDialog控件实例
OpenFileDialog openFileDialog1 = new OpenFileDialog();
// 设置文件选择对话框中是否显示只读属性的文件
openFileDialog1.ShowReadOnly = true;
// 设置文件选择对话框中只读属性的选择状态
openFileDialog1.ReadOnlyChecked = true;
// 设置文件选择对话框中是否显示帮助按钮
openFileDialog1.ShowHelp = true;

🦋1.9 SupportMultiDottedExtensions

SupportMultiDottedExtensions属性用于指定是否支持多点扩展名。如果设置为true,则用户可以选择带有多个点的扩展名文件,例如“file.tar.gz”;如果设置为false,则用户只能选择单点扩展名文件。默认情况下,该属性值为false。

示例代码:

private void button1_Click(object sender, EventArgs e)
{
    using (OpenFileDialog openFileDialog = new OpenFileDialog())
    {
        openFileDialog.SupportMultiDottedExtensions = true;
        openFileDialog.ShowDialog();
    }
}

在上述示例代码中,点击按钮时会弹出打开文件对话框,用户可以选择多点扩展名的文件。

🦋1.10 ValidateNames

ValidateNames属性用于指示用户是否必须输入或选择有效文件名。如果设置为true,则用户必须输入有效的文件名或选择有效的文件,否则将显示一个警告框并要求用户重新输入。如果设置为false,则用户可以输入或选择任何名称,即使该名称不存在或不合法。

示例代码:

using System.Windows.Forms;

// 创建一个OpenFileDialog控件
var openFileDialog = new OpenFileDialog();

// 设置ValidateNames属性为true
openFileDialog.ValidateNames = true;

// 显示文件选择对话框
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
    // 获取选择的文件名称
    string fileName = openFileDialog.FileName;

    // 处理选择的文件
    // ...
}

在上面的示例中,当用户选择的文件名无效或不存在时,将显示一个警告框提醒用户输入有效的文件名或选择有效的文件。如果ValidateNames属性设置为false,用户可以输入或选择任何名称。

🔎2.常用场景

OpenFileDialog控件常用于让用户选择一个或多个文件进行打开操作的场景。以下是一些Winform中OpenFileDialog控件常用的场景:

  1. 打开文件:用户可以通过OpenFileDialog控件来选择一个或多个要打开的文件,从而可以在应用程序中读取文件内容进行操作。

  2. 导入文件:如果应用程序需要导入一些数据,用户可以使用OpenFileDialog控件选择这些数据所在的文件,然后将其导入到应用程序中。

  3. 保存文件:如果应用程序需要保存一些数据,用户可以使用SaveFileDialog控件选择保存数据的位置和文件名,然后将数据保存在指定的文件中。

  4. 选择图片:如果应用程序需要用户在界面中展示一些图片,可以通过OpenFileDialog控件让用户选择需要展示的图片文件。

  5. 选择音频或视频:如果应用程序需要播放一些音频或视频,用户可以使用OpenFileDialog控件选择音频或视频文件,并将其播放出来。

🔎3.具体案例

要在WinForms应用程序中使用OpenFileDialog控件打开Excel文件并读取其内容,你需要使用适当的库来处理Excel文件。通常,可以使用Microsoft Office库(如Microsoft.Office.Interop.Excel)或第三方库(如EPPlus)来实现这一目标。以下是一个使用EPPlus库的示例:

下面是一个完整的示例,演示如何在WinForms应用程序中使用OpenFileDialog控件打开Excel文件并读取其内容:

using System;
using System.Windows.Forms;
using OfficeOpenXml; // 引用EPPlus库

namespace WinFormsExcelReader
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 创建OpenFileDialog实例
            OpenFileDialog openFileDialog = new OpenFileDialog();

            // 设置OpenFileDialog的属性,限制用户选择Excel文件
            openFileDialog.Filter = "Excel Files|*.xlsx;*.xls";

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                // 获取选中的Excel文件路径
                string excelFilePath = openFileDialog.FileName;
                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
                // 使用EPPlus库打开Excel文件
                using (ExcelPackage package = new ExcelPackage(new System.IO.FileInfo(excelFilePath)))
                {
                    // 获取Excel工作簿的第一个工作表
                    ExcelWorksheet worksheet = package.Workbook.Worksheets[0];

                    // 创建一个DataTable来存储Excel数据
                    DataTable dt = new DataTable();

                    // 从Excel工作表中读取数据并填充到DataTable
                    foreach (var firstRowCell in worksheet.Cells[1, 1, 1, worksheet.Dimension.End.Column])
                    {
                        dt.Columns.Add(firstRowCell.Text);
                    }

                    for (int rowNumber = 2; rowNumber <= worksheet.Dimension.End.Row; rowNumber++)
                    {
                        var worksheetRow = worksheet.Cells[rowNumber, 1, rowNumber, worksheet.Dimension.End.Column];
                        DataRow row = dt.Rows.Add();
                        foreach (var cell in worksheetRow)
                        {
                            row[cell.Start.Column - 1] = cell.Text;
                        }
                    }

                    // 将DataTable绑定到DataGridView
                    dataGridView1.DataSource = dt;
                }
            }
        }
    }
}

在此示例中,我们使用了EPPlus库来打开和处理Excel文件。当用户点击按钮时,会弹出OpenFileDialog对话框,允许用户选择Excel文件。选中文件后,我们使用EPPlus打开文件,选择第一个工作表,并遍历所有单元格以读取内容。

在这里插入图片描述
在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

![在这里插入图片描述](https://img-blog.csdnimg.cn/e06a317e89694a23ad89d2c59538c3a1.jpeg#pic_center =450x300)

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。