首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【愚公系列】2023年11月 WPF控件专题 Line控件详解
2
【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题
3
【愚公系列】2023年11月 Winform控件专题 Label控件详解
4
【愚公系列】2023年11月 Winform控件专题 Button控件详解
5
【愚公系列】2023年11月 Winform控件专题 Form控件详解
6
【愚公系列】2023年11月 Winform控件专题 TextBox控件详解
7
【愚公系列】2023年11月 Winform控件专题 CheckBox控件详解
8
【愚公系列】2023年11月 Winform控件专题 RadioButton控件详解
9
【愚公系列】2023年11月 Winform控件专题 ComboBox控件详解
10
【愚公系列】2023年11月 Winform控件专题 RichTextBox控件详解
11
【愚公系列】2023年11月 Winform控件专题 ListBox控件详解
12
【愚公系列】2023年11月 Winform控件专题 CheckedListBox控件详解
13
【愚公系列】2023年11月 Winform控件专题 numericUpDown控件详解
14
【愚公系列】2023年11月 Winform控件专题 LinkLabel控件详解
15
【愚公系列】2023年11月 Winform控件专题 DateTimePicker控件详解
16
【愚公系列】2023年11月 Winform控件专题 NotifyIcon控件详解
17
【愚公系列】2023年11月 Winform控件专题 ContextMenuStrip控件详解
18
【愚公系列】2023年11月 Winform控件专题 Timer控件详解
19
【愚公系列】2023年11月 Winform控件专题 PictureBox控件详解
20
【愚公系列】2023年11月 Winform控件专题 Chart控件详解
21
【愚公系列】2023年11月 Winform控件专题 DataGridView控件详解
22
【愚公系列】2023年11月 Winform控件专题 TableLayoutPanel控件详解
23
【愚公系列】2023年11月 Winform控件专题 ProgressBar控件详解
24
【愚公系列】2023年11月 Winform控件专题 Panel控件详解
25
【愚公系列】2023年11月 Winform控件专题 FlowLayoutPanel控件详解
26
【愚公系列】2023年11月 Winform控件专题 GroupBox控件详解
27
【愚公系列】2023年11月 Winform控件专题 SplitContainer控件详解
28
【愚公系列】2023年11月 Winform控件专题 TabControl控件详解
29
【愚公系列】2023年11月 Winform控件专题 ToolTip控件详解
30
【愚公系列】2023年11月 Winform控件专题 MaskedTextBox控件详解
31
【愚公系列】2023年11月 Winform控件专题 MonthCalendar控件详解
32
【愚公系列】2023年11月 Winform控件专题 TreeView控件详解
33
【愚公系列】2023年11月 Winform控件专题 MenuStrip控件详解
34
【愚公系列】2023年11月 Winform控件专题 OpenFileDialog控件详解
35
【愚公系列】2023年11月 Winform控件专题 SaveFileDialog控件详解
36
【愚公系列】2023年12月 Winform控件专题 FontDialog控件详解
37
【愚公系列】2023年12月 Winform控件专题 ColorDialog控件详解
38
【愚公系列】2023年12月 Winform控件专题 FolderBrowserDialog控件详解
39
【愚公系列】2023年12月 Winform控件专题 StatusStrip控件详解
40
【愚公系列】2023年12月 Winform控件专题 ToolStrip控件详解
41
【愚公系列】2023年12月 Winform控件专题 HelpProvider控件详解
42
【愚公系列】2023年12月 Winform控件专题 ToolStripContainer控件详解
43
【愚公系列】2023年12月 Winform控件专题 BackgroundWorker控件详解
44
【愚公系列】2023年12月 GDI+绘图专题 图形图像编程基础
45
【愚公系列】2023年12月 GDI+绘图专题 图形图像的重绘
46
【愚公系列】2023年12月 GDI+绘图专题 颜色获取和图形绘制
47
【愚公系列】2023年12月 GDI+绘图专题 Point
48
【愚公系列】2023年12月 GDI+绘图专题 Rectangle
49
【愚公系列】2023年12月 GDI+绘图专题 Matrix
50
【愚公系列】2023年12月 GDI+绘图专题 Pen

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

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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控件的选择:

代码语言:c#
复制
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,则不添加扩展名。

以下是一个示例:

代码语言:c#
复制
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属性的示例代码:

代码语言:c#
复制
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.AutoUpgradeEnabled = true;
//其他设置属性

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

🦋1.3 CheckFileExists、CheckPathExists

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

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

使用方式:

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

代码语言:c#
复制
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”,则此属性将返回一个字符串数组,其中包含这三个文件的文件名。

使用示例:

代码语言:c#
复制
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属性指定了在文件对话框中显示的文件类型过滤器,如下所示:

代码语言:c#
复制
openFileDialog1.Filter = "文本文件|*.txt|所有文件|*.*";

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

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

代码语言:c#
复制
openFileDialog1.FilterIndex = 1;

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

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

🦋1.6 InitialDirectory

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

代码语言:c#
复制
using System.Windows.Forms;

//...

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

//...

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

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

代码语言:c#
复制
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属性来访问每个选定的文件的路径。

以下是一个示例:

代码语言:c#
复制
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控件时,通过设置控件的属性来控制文件选择对话框的显示方式。例如:

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

🦋1.9 SupportMultiDottedExtensions

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

示例代码:

代码语言:c#
复制
private void button1_Click(object sender, EventArgs e)
{
    using (OpenFileDialog openFileDialog = new OpenFileDialog())
    {
        openFileDialog.SupportMultiDottedExtensions = true;
        openFileDialog.ShowDialog();
    }
}

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

🦋1.10 ValidateNames

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

示例代码:

代码语言:c#
复制
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文件并读取其内容:

代码语言:c#
复制
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打开文件,选择第一个工作表,并遍历所有单元格以读取内容。

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

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

下一篇
举报
领券