当前位置: 首页 > news >正文

C#中openFileDialog控件的使用方法

目录

一、OpenFileDialog基本属性

二、使用 OpenFile 从筛选的选择中打开文件

1.示例源码

2.生成效果

3. 其它示例

三、使用 StreamReader 以流的形式读取文件

1.示例源码

2.生成效果

四、一种新颖的Windows窗体应用文件设计方法


        在C#中,OpenFileDialog控件用于创建一个打开文件对话框,允许用户选择文件。OpenFileDialog提供了一种简单的方式来让用户选择一个或多个文件,并获取用户所选文件的路径。

        OpenFileDialog是打开文件对话框的意思,即在窗体设计中,如果需要打开本地文件,就需要用到该类。

一、OpenFileDialog基本属性

属性说明
InitialDirectory对话框的初始目录
Filter获取或设置当前文件名筛选器字符串,例如,“文本文件(.txt)|.txt|所有文件(.)||.”
FilterIndex在对话框中选择的文件筛选器的索引,如果选第一项就设为1
RestoreDirectory控制对话框在关闭之前是否恢复当前目录
FileName:第一个在对话框中显示的文件或最后一个选取的文件
Title将显示在对话框标题栏中的字符
AddExtension是否自动添加默认扩展名
CheckPathExists在对话框返回之前,检查指定路径是否存在
DefaultExt默认扩展名
DereferenceLinks在从对话框返回前是否取消引用快捷方式
ShowHelp启用"帮助"按钮
ValiDateNames控制对话框检查文件名中是否不含有无效的字符或序列

二、使用 OpenFile 从筛选的选择中打开文件

1.示例源码

//使用 OpenFile 从筛选的选择中打开文件
using System.Diagnostics;
using System.Security;namespace WinFormsApp1
{public partial class OpenFileDialogForm : Form{private readonly Button selectButton;private readonly OpenFileDialog openFileDialog1;public OpenFileDialogForm(){InitializeComponent();//新建openFileDialog控件openFileDialog1 = new OpenFileDialog(){FileName = "Select a text file",      //OpenFileDialog窗体提示Filter = "Text files (*.txt)|*.txt",  //选择什么扩展名类型的文件Title = "Open text file"              //OpenFileDialog窗体的抬头};//新建按钮及点击事件selectButton = new Button(){Size = new Size(100, 20),Location = new Point(15, 15),Text = "Select file"};selectButton.Click += new EventHandler(SelectButton_Click);Controls.Add(selectButton);}/// <summary>/// 按钮点击事件应用/// 使用 Button 控件的 Click 事件处理程序打开包含仅显示文本文件的筛选器的 OpenFileDialog。 /// 用户选择文本文件并选择“确定”后,可用 OpenFile 方法在记事本中打开该文件/// </summary>private void SelectButton_Click(object? sender, EventArgs e){if (openFileDialog1.ShowDialog() == DialogResult.OK){try{var filePath = openFileDialog1.FileName;using Stream str = openFileDialog1.OpenFile();Process.Start("notepad.exe", filePath);}catch (SecurityException ex){MessageBox.Show($"Security error.\n\nError message: {ex.Message}\n\n" +$"Details:\n\n{ex.StackTrace}");}}}}
}

2.生成效果

 

3. 其它示例

         在作者的这篇文章中也有这种读取文件的示例。

         写文章-CSDN创作中心  https://mp.csdn.net/mp_blog/creation/editor/134621313

三、使用 StreamReader 以流的形式读取文件

1.示例源码

//使用 StreamReader 以流的形式读取文件
using System.Security;
namespace _05_3
{public partial class Form1 : Form{private readonly Button selectButton;private readonly OpenFileDialog openFileDialog1;private readonly TextBox textBox1;public Form1(){InitializeComponent();//创建OpenFileDialog控件openFileDialog1openFileDialog1 = new OpenFileDialog();//创建按钮控件selectButton及添加点击事件selectButton = new Button{Size = new Size(100, 20),Location = new Point(15, 15),Text = "Select file"};selectButton.Click += new EventHandler(SelectButton_Click);//创建文本框控件textBox1textBox1 = new TextBox{Size = new Size(300, 300),Location = new Point(15, 40),Multiline = true,ScrollBars = ScrollBars.Vertical};//设置Form1表格大小ClientSize = new Size(330, 360);Controls.Add(selectButton);Controls.Add(textBox1);}//自定义方法private void SetText(string text){textBox1.Text = text;}/// <summary>/// 使用 StreamReader 以流的形式读取文件/// 使用 Windows 窗体 Button 控件的 Click 事件处理程序通过 ShowDialog 方法打开 OpenFileDialog。/// 用户选择一个文件并选择“确定”后,StreamReader 类的实例将读取该文件,并在窗体的文本框中显示文件内容。/// </summary>private void SelectButton_Click(object? sender, EventArgs e){if (openFileDialog1.ShowDialog() == DialogResult.OK){try{var sr = new StreamReader(openFileDialog1.FileName);SetText(sr.ReadToEnd());}catch (SecurityException ex){MessageBox.Show($"Security error.\n\nError message: {ex.Message}\n\n" +$"Details:\n\n{ex.StackTrace}");}}}}
}

2.生成效果

 

四、一种新颖的Windows窗体应用文件设计方法

        这两个示例使用了一种Windows窗体应用文件新的设计方法,不设计Form1.cs[设计]。所有试图、控件都通过编程实现。是不是很新颖呢?你更喜欢哪一种设计方法呢?

http://www.lryc.cn/news/246340.html

相关文章:

  • 多线程04 死锁,线程可见性
  • java中文转拼音(去除音调)
  • [Android]常见的数据传递方式
  • <蓝桥杯软件赛>零基础备赛20周--第7周--栈和二叉树
  • 探究Kafka原理-7.exactly once semantics 和 性能测试
  • 【密码学引论】序列密码
  • 知识变现的未来:解析知识付费系统的核心
  • 【Linux基础】Linux常见指令总结及周边小知识
  • 【Android知识笔记】性能优化专题(五)
  • Java基础之泛型
  • WPF实战项目十五(客户端):RestSharp的使用
  • C语言基础篇5:指针(二)
  • 「Verilog学习笔记」非整数倍数据位宽转换8to12
  • Qt_一个由单例引发的崩溃
  • P8A004-系统加固-磁盘访问权限
  • 数智赋能 锦江汽车携手苏州金龙打造高质量盛会服务
  • kolla-ansible 部署OpenStack云计算平台
  • wireshark 抓包提示
  • Redis未授权访问-CNVD-2019-21763复现
  • 汇编:常用的输入与输出
  • MYSQL基础之【正则表达式,事务处理】
  • Mysql并发时常见的死锁及解决方法
  • 二十九、微服务案例完善(数据聚合、自动补全、数据同步)
  • vue 目录树的展开与关闭
  • 【Docker】python flask 项目如何打包成 Docker images镜像 上传至阿里云ACR私有(共有)镜像仓库 集成Drone CI
  • 力扣labuladong——一刷day55
  • springboot实现验证码功能
  • 内测分发平台是否支持应用的微服务化部署
  • 1140. 最短网络,prim算法,模板题
  • 升级jdk17过程中,原来的jdk8下的webservice客户端怎样处理