【31】C# WinForm入门到精通 ——保存文件SaveFileDialog 【属性、方法、事件、实例、源码】

  • WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,是 C# 语言中的一个重要应用。

  • .NET 提供了大量 Windows 风格的控件和事件,可以直接拿来使用。

  • 本专栏内容按照标题序号逐渐深入的,如有不懂的基础问题,可看前面教程

  • 在介绍属性的时候,会展示一些用法、代码、实例、截图 ,这样看起来更清晰,免得直接看最后综合实例会有些懵

文章目录

  • [1 保存文件SaveFileDialog------属性](#1 保存文件SaveFileDialog——属性)
    • [1.1 Name](#1.1 Name)
    • [1.2 AddExtension、DefaultExt](#1.2 AddExtension、DefaultExt)
    • [1.3 CheckFileExists 、CheckPathExists](#1.3 CheckFileExists 、CheckPathExists)
    • [1.4 CreatePrompt](#1.4 CreatePrompt)
    • [1.5 DereferenceLinks、DereferenceLinks、FileNames](#1.5 DereferenceLinks、DereferenceLinks、FileNames)
    • [1.6 Filter](#1.6 Filter)
    • [1.7 Filterlndex](#1.7 Filterlndex)
    • [1.8 InitialDirectory](#1.8 InitialDirectory)
    • [1.9 ShowHelp](#1.9 ShowHelp)
    • [1.10 Tag](#1.10 Tag)
    • [1.11 Title](#1.11 Title)
    • [1.12 ValidateNames](#1.12 ValidateNames)
  • [2 事件](#2 事件)
    • [2.1 HelpRequest](#2.1 HelpRequest)
    • [2.2 Fileok](#2.2 Fileok)
  • [3 实例:打开/保存文件](#3 实例:打开/保存文件)

1 保存文件SaveFileDialog------属性

文件对话框(FileDialog)主要包括文件浏览对话框,以及用于查找、打开、保存文件的功能,与 Windows 中的文件对话框类似。

  • 保存文件对话框控件用于,需要用户保存文件时可以设置文件的文件名、设置文件的保存路径。

属性:

1.1 Name

获取控件的对象

1.2 AddExtension、DefaultExt

  • AddExtension该属性用于SaveFileDialog保存文件时,如果没有为文件添加后缀,则自动为保存的文件添加一个后缀,这个后缀是由DefaultExt属性决定的,比如DefaultExt的值为txt;

  • DefaultExtAddExtension一起配合使用,当保存文件时没有输入文件后缀时,自动添加的后缀;

cpp 复制代码
        private void button1_Click(object sender, EventArgs e)
        {
            saveFileDialog1.DefaultExt = "txt";
            saveFileDialog1.ShowDialog();//打开文件保存对话框
            textBox1.Text =  saveFileDialog1.FileName;//将文件名显示在  textBox1中
        }


可以看到123已经变成了123.txt,这是因为我们设置了DefaultExt为txt类型

1.3 CheckFileExists 、CheckPathExists

  • CheckFileExists 在SaveFileDialog没什么作用
  • CheckPathExists 在SaveFileDialog没什么作用

1.4 CreatePrompt

该属性为true时,并且ValidateNames为true时,当保存的文件不存在时,是否弹窗提示。

1.5 DereferenceLinks、DereferenceLinks、FileNames

  • DereferenceLinks 该属性对于SaveFileDialog无效
  • FileName 该属性用于获取我们在打开"SaveFileDialog中"输入的文件名 (单个文件)
  • FileNames 该属性在SaveFileDialog没有作用

1.6 Filter

该属性用于指定保存的文件是什么类型,如下代码:

cpp 复制代码
        private void button1_Click(object sender, EventArgs e)
        {
            saveFileDialog1.ValidateNames = true;
            saveFileDialog1.CreatePrompt = true;

            //saveFileDialog1.DefaultExt = "txt";
            saveFileDialog1.Filter = "csv文件|*.csv";//指定后缀名为.csv,

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string fileNamew = saveFileDialog1.FileName;
                textBox1.Text = fileNamew;//将文件名显示在  textBox1中
            }
        }

注意与DefaultExt区别

1.7 Filterlndex

该属性用于指定在有多个类型的文件时,指定SaveFileDialog对话打开以后,显示的默认保存是哪个类型的文件,

比如下面的代码中,共指定了CSV文件、x文件,并且CSV文件对应的Fiterlindex 就是1,txt文件对应的Filterindex 就是2,

原则就是从左到有数,Eilterlndex的值从1、2、3、依次加1。当设置Filterlndex 的值为2的时候,效果如下图:

1.8 InitialDirectory

设置保存文件的路径,代码如下:

cpp 复制代码
        private void button1_Click(object sender, EventArgs e)
        {
            saveFileDialog1.ValidateNames = true;
            saveFileDialog1.CreatePrompt = true;
            saveFileDialog1.InitialDirectory = @"E:\Programming_test\Images";//设置指定保存路径

            //文件后缀名
            saveFileDialog1.DefaultExt = "txt";
            saveFileDialog1.Filter = "csv文件|*.csv|txt文件|*.txt";
            saveFileDialog1.FilterIndex = 2; //指定为2,对应的.txt

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string fileNamew = saveFileDialog1.FileName;
                textBox1.Text = fileNamew;//将保存路径、文件名显示在textBox1中
            }
        }

点击保存文件按钮

保存文件对话框 直接打开到 程序中设定的路径 E:\Programming_test\Images

且后缀名 指定为FilterIndex = 2,对应的.txt

1.9 ShowHelp

该属性设置为true时,下图中会出现一个"帮助"按钮,我们可以在HelpRequest事件中加上一些,当我们点击"帮助"按钮以后的各种事件处理


1.10 Tag

绑定数据

1.11 Title

该属性用于设置保存对话框的标题,效果如下

1.12 ValidateNames

该属性和CreatePrompt 属性结合使用

2 事件

2.1 HelpRequest

该事件用于用户点击"帮助"按钮触发

2.2 Fileok

当用户点击"保存"按钮以后触发,一般不使用该事件,而是使用ShowDialog方法,然后根据该方法返回的结果来判断保存文件是否成功。

3 实例:打开/保存文件

  • 保存按钮:将文本框内容保存到.txt文件里;
  • 打开按钮:将.txt文件内容显示到文本框里;

在窗体中添加openFileDialog和saveFileDialog控件。

  • 保存按钮:将文本框内容保存到.txt文件里;
  • 打开按钮:将.txt文件内容显示到文本框里;
cpp 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinFormTest2
{
    public partial class Form5 : Form
    {
        public Form5()
        {
            InitializeComponent();
        }

        //保存文件
        private void button1_Click(object sender, EventArgs e)
        {
            saveFileDialog1.ValidateNames = true;
            saveFileDialog1.CreatePrompt = true;
            saveFileDialog1.InitialDirectory = @"E:\Programming_test";//设置指定保存路径

            //文件后缀名
            saveFileDialog1.DefaultExt = "txt";
            saveFileDialog1.Filter = "csv文件|*.csv|txt文件|*.txt";
            saveFileDialog1.FilterIndex = 2; //指定为2,对应的.txt

            DialogResult dr = saveFileDialog1.ShowDialog();
            //获取所打开文件的文件名
            string filename = saveFileDialog1.FileName;

            if (dr == DialogResult.OK && !string.IsNullOrEmpty(filename))
            {
                StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8); // StreamWriter()定义在System.IO中
                sw.Write(textBox1.Text);//将textBox1 文本内容写到文件里
                sw.Close();
            }
        }

        //打开文件
        private void button2_Click(object sender, EventArgs e)
        {
            DialogResult dr = openFileDialog1.ShowDialog();
            //获取所打开文件的文件名
            string filename = openFileDialog1.FileName;
            if (dr == DialogResult.OK && !string.IsNullOrEmpty(filename))
            {
                StreamReader sr = new StreamReader(filename); // StreamReader()定义在System.IO中,添加命名空间using System.IO;
                textBox1.Text = sr.ReadToEnd();//将文本内容读取显示到textBox1 
                sr.Close();
            }
        }
    }
}
  • 第一次保存 123.txt不存在,创建并保存

继续追加保存

查看123.txt文本内容

相关推荐
深海潜水员24 分钟前
【Python】 切割图集的小脚本
开发语言·python
R-G-B1 小时前
【28】C# WinForm入门到精通 ——多文档窗体MDI【属性、方法、实例、源码】【多窗口重叠、水平平铺、垂直平铺、窗体传值】
c#·winform·多文档窗体mdi·多窗口重叠·水平平铺·垂直平铺·窗体传值
Yolo566Q1 小时前
R语言与作物模型(以DSSAT模型为例)融合应用高级实战技术
开发语言·经验分享·r语言
Felven1 小时前
C. Challenging Cliffs
c语言·开发语言
Dreamsi_zh2 小时前
Python爬虫02_Requests实战网页采集器
开发语言·爬虫·python
_君落羽_3 小时前
C语言 —— 指针(4)
c语言·开发语言
weixin_448617053 小时前
疏老师-python训练营-Day30模块和库的导入
开发语言·python
望星空听星语3 小时前
C语言自定义数据类型详解(四)——联合体
c语言·开发语言
壹立科技4 小时前
Java源码构建智能名片小程序
java·开发语言·小程序
小小李程序员4 小时前
JSON.parse解析大整数踩坑
开发语言·javascript·json