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.mzph.cn/news/173142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3+tsx的使用

<template><div><xiaoman on-click"getItem" name"似懂非懂"></xiaoman></div> </template><script setup langts>import xiaoman from "./App"const getItem(item:any)>{console.log(item,it…

redis引发的一次生产事故,内存爆满

redis引发的一次生产事故 问题描述&#xff1a; 发版后回归测试&#xff0c;不定时出现token失效&#xff0c;导致自动退出到登录界面。如果操作的人员较多&#xff0c;token失效的就比较快&#xff0c;操作的人员较少token失效的相对较慢。 问题复现&#xff1a; 同一账号…

【LeeCode】*904.水果成篮

你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xff0c;你必须按照要求采摘水果&…

《C++PrimePlus》第10章 对象和类

10.1 过程性编程和面向对象编程 10.2 抽象和类 10.3 类的构造函数和析构函数 类的定义和使用&#xff08;买卖股票&#xff09; 头文件stock10.h #ifndef __STOCK00__H__ #define __STOCK00__H__#include <string>class Stock { // pravate的内容只能通过public访问 p…

简易地铁自动机售票系统实现(C++)

该程序具有以下功能 (1) 一个地铁路线类 Router&#xff0c;包含路线编号&#xff0c;途中的各个站点。可以新增、删除、查询路线&#xff0c;可以根据线路名称&#xff0c;显示线路图片。 (2) 一个地图类 Map&#xff0c;可以显示所有可以乘坐的地铁站名&#xff0c;以及线路…

leetcode 不同的二叉搜索树

给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;n 1 输出&#xff1a;…

MybatisBatchUtils功能介绍

MybatisBatchUtils 是一个 MyBatis 框架的工具类&#xff0c;主要用于简化 MyBatis 中批量操作的代码编写。该工具类封装了 MyBatis 中的批量操作方法&#xff0c;可以方便地进行批量插入、更新和删除等操作。 一般来说&#xff0c;使用 MyBatis 进行批量操作需要先设置 JDBC 驱…

展锐Android10,R,lmk怎么添加白名单

展锐Android10,R,lmk怎么添加白名单 低内存lmk时,怎么添加白名单 [ANSWER] 如果要保活进程,使之不被lowmemorykiller杀掉,可以将要保活的进程加到白名单中: lmkd_param.conf文件是lmkd杀进程的白名单配置文件,其中配置的应用是不会被lmkd杀掉的 请在device/sprd目录中…

js用到的算法

1.对象数组中&#xff0c;对象中有对象&#xff0c;数组根据对象中的对象打平 [{indexValueMap: { 68443: 0, 68457: 0 },rowName1: 固定收益类,rowName2: 交易类,rowName3: 次级},{indexValueMap: { 68443: 0, 68457: 0 },rowName1: 固定收益类,rowName2: 交易类,rowName3: 中…

虚幻学习笔记—点击场景3D物体的两种处理方式

一、前言 本文使用的虚幻引擎为5.3.2&#xff0c;两种方式分别为&#xff1a;点击根物体和精准点击目标物体。 二、实现 2.1、玩家控制器中勾选鼠标点击事件&#xff1a;这一步很重要&#xff0c;如图2.1.1所示&#xff1a;在自定义玩家控制器中勾 图2.1.1 选该项&#xff0c…

nacos集群开箱搭建-linux版本搭建

原创/朱季谦 nacos是一款易于构建云原生应用的动态服务发现、配置管理和服务管理平台&#xff0c;简单而言&#xff0c;它可以实现类似zookeeper做注册中心的功能&#xff0c;也就是可以在springcloud领域替代Eureka、consul等角色&#xff0c;同时&#xff0c;还可以充当spri…

C 文件 fseek() 函数

C 文件 fseek() 函数 fseek()函数用于将文件指针设置为指定的偏移量。它用于将数据写入文件中所需的位置。 语法&#xff1a; int fseek(FILE *stream, long int offset, int whence)参数 第一个参数 stream 为文件指针 第二个参数 offset 为偏移量&#xff0c;整数表示正向…

activiti工作流 定义 TaskListener 无效

使用activiti 5.22 想全局定义任务监听器&#xff0c;结果试了多次发现没有效果。 最后看了看activiti的相关源码发现&#xff0c;流程定义里边没有处理 TaskListener 相关的操作&#xff0c;发现TaskListener 处理是在Task里边处理的&#xff0c;所以把TaskListener 定义在Ta…

【ISP】噪声--sensor(2)

1.热噪声 也叫KT/C噪声&#xff0c;或者叫暗电流噪声。电子的热运动的导致&#xff0c;温度上升&#xff0c;噪声增大。 2.FPN固定模式噪声 由于每个像素点的元器件制造的会有偏差&#xff0c;也就是这些器件的工作参数相对理论值的漂移就构成一种固定模式噪声。 3.光子散粒噪…

Springboot+vue的客户关系管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的客户关系管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的客户关系管理系统&#xff0c;采用M&#xff08…

fastjson和jackson序列化的使用案例

简单记录一下一个fastjson框架和jackson进行序列化的使用案例&#xff1a; 原json字符串&#xff1a; “{“lockCount”:”{1:790,113:1,2:0,211:0,101:1328,118:8,137:0,301:0,302:0}“,“inventoryCount”:”{1:25062,113:2,2:10000,211:2,101:11034,118:9,137:40,301:903914…

Python实现定时任务的方案及其比较

目录 一、引言 二、基于time模块的定时任务 三、基于schedule库的定时任务 四、基于APScheduler库的定时任务 五、基于Celery库的定时任务 七、总结与比较 一、引言 在Python中&#xff0c;定时任务指的是在特定的时间间隔或者特定的时间点自动执行某些操作的任务。定时…

十大排序之冒泡排序与快速排序(详解)

文章目录 &#x1f412;个人主页&#x1f3c5;算法思维框架&#x1f4d6;前言&#xff1a; &#x1f380;冒泡排序 时间复杂度O(n^2)&#x1f387;1. 算法步骤思想&#x1f387;2.动画实现&#x1f387; 3.代码实现&#x1f387;4.代码优化&#xff08;添加标志量&#xff09; …

前端向后端传JSON数据,使用MyBatis查询

form中向后端传的是空字符串&#xff0c;并不是null 而在MyBatis的判断中应判断是否为空字符串&#xff0c;而并非null

【Rxjava详解】(四)线程切换

lift()变换原理 这些变换虽然功能各有不同&#xff0c;但实质上都是针对事件序列的处理和再发送。而在RxJava的内部&#xff0c;它们是基于同一个基础的变换方法&#xff1a;lift()。 首先看一下lift() 的内部实现&#xff08;仅显示了部分主要逻辑代码): public <R> …