C# WinForm 选择打开文件和保存文件

做 winform 项目的时候正好遇到了记录一下:

打开文件

我们使用 OpenFileDialog 控件来打开文件选择框:

  • 通过 Title 属性可以设置选择框的标题
  • Filter 属性可以设置选中的文件类型,这个属性由两个部分组成 SVG files (*.svg)|*.svg ,前面部分代表选择框中显示给用户的名字,而后面部分系统过滤的文件类型,如果需要设定多种类型,可以通过 | 分割这些类型,特殊的 *.* 代表全部类型文件:
//创建打开页面
var flgOpenFileDialog = new OpenFileDialog();
//设置标题
flgOpenFileDialog.Title = "请选择文件";
//设置文件的后缀
flgOpenFileDialog.Filter = @"SVG files (*.svg)|*.svg|AI files (*.ai)|*.ai|EPS files (*.eps)|*.eps|DXF files (*.dxf)|*.dxf|All files (*.*)|*.*";

Filter 属性也可以通过多次添加的方式来设置列表:

fileDialog.Filter = "All files (*.*)|*.*";
fileDialog.Filter = "SVG files (*.svg)|*.svg";

当用户选择完毕文件后,我们可以通过 DialogResult.OK 来响应它,通过 FileName 属性可以获取到选择的文件

if (fileDialog.ShowDialog() == DialogResult.OK)
{
    
    
       // 文件的路径
       string file = fileDialog.FileName;
}

如果用户需要选择多个文件,可以通过设置 Multiselect 属性来开启多选,此时 FileName 属性拿到的是第一个文件的路径,而 FileNames 属性可以拿到选择的全部文件,它返回一个数组:

fileDialog.Multiselect = false;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
    
    
       // 文件的路径
       string[] files = fileDialog.FileNames;
}

保存文件

如果用户想要打开一个保存文件的窗口,就需要选用 SaveFileDialog 这个控件来操作,其用法和 OpenFileDialog 一致,通过 Filter 可以设置可以保存的格式,通过 FileName 属性我们可以文件的设置默认的保存名称,这里我们只需要填写名称即可,不需要文件的保存路径,还有一些其他配置写在代码注释中了

SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "svg文件(*.svg)|*.svg"; ; //设置文件类型
dialog.FileName = "test.svg";
dialog.DefaultExt = "svg"; //设置默认格式(可以不设)
dialog.AddExtension = true; //设置自动在文件名中添加扩展名
dialog.RestoreDirectory = true;//保存对话框是否记忆上次打开的目录 

和打开文件时一样,我们可以通过 DialogResult.OK 来得知用户选择完毕,之后通过 FileName 属性获取文件保存位置的完整路径,之后通过 IO 将数据写入即可。

if (dialog.ShowDialog() == DialogResult.OK)
{
    
    
       string save_filename = dialog.FileName; //获得文件路径 
       //举例子,写入一个二进制文件
       BinaryWriter bw = new BinaryWriter(File.Create(save_filename));
       bw.Write(_newBvk);
       bw.Close();
       MessageBox.Show("保存成功!");
}

如果你想在用户在选择框取消选择时做一些事情,你可以通过 DialogResult.Cancel 来判定

if( dialog.ShowDialog() == DialogResult.Cancel)
{
    
    
// 取消操作
}

属性补全

既然用到了这两个控件,那就顺便学习一下他们的全部属性,方便之后可以更加快捷的使用他们,下面是查阅资料得到的内容:

这两个属性用于定于我们筛选器的内容,也就是这个位置的内容,具体用法在上面已经提过了

dialog.Filter = "SVG files (*.svg)|*.svg"; //文件筛选器
dialog.FilterIndex = 1; //默认显示哪一个文件筛选器

值得一提的是除了之前提到的用法,这样的方式也是可以添加多个筛选器的:

dialog.Filter = "SVG files (*.svg)|*.svg"; 
dialog.Filter = "All files (*.*)|*.*"; 

在这里插入图片描述

这两个属性和目录相关,前者用于设置第一次打开时的目录,后者用于在我们多次打开时,保留上一次打开的目录状态

dialog.InitialDirector = "E://"  //对话框的初始目录  
dialog.RestoreDirectory = true;//保存对话框是否记忆上次打开的目录 

这三个属性和我们的文件名相关,前者用于设置我们在编写文件名称后,是不是要自动为用户添加拓展名,后者则是设置我们自动生成的拓展名内容,而 filename 则用于我们设置默认保存的文件名称:

dialog.AddExtension = true; //设置自动在文件名中添加扩展名
dialog.DefaultExt = ".svg" //设置默认格式
dialog.FileName = "test.svg"; //默认保存的文件名称

这两个属性用于定义我们的选择框信息,是不是展示帮助按钮,以及左上角的标题:

dialog.ShowHelp  = true // 是不是启动帮助按钮
dialog.Title = "save"  //左上方的标题

这三个属性是用于校验的,前者两个用于判定用户输入(选择)的路径是不是存在(会导致保存失败),最后一个则用于设置是不是要判定选择的文件和路径是不是含有 windows 下无效的字符(会导致保存失败)

dialog.CheckFileExists = true; //在对话框返回之前,检查指定文件是否存在
dialog.CheckPathExists = true; //在对话框返回之前,检查指定路径是否存在  
dialog.ValidateNames  = true   //控制对话框检查输入的文件名中是否不含有无效的字符或序列

更多更详细的资料可以查看官方文档:

https://learn.microsoft.com/zh-cn/dotnet/desktop/winforms/controls/savefiledialog-component-windows-forms?view=netframeworkdesktop-4.8&redirectedfrom=MSDN

猜你喜欢

转载自blog.csdn.net/weixin_46463785/article/details/131458683