实例题目:对输入的账号、姓、名、余额信息保存到文件,并可以读取到界面。

演示:

创建三个项目文件:

设计思路:
由于读和写的界面差不多,就是按钮button不一样,这样的话,可以做一个父亲窗体,让读和写两个窗体继承父窗体即可(关键操作)。
对于数据的操作,可以将数据封装起来,这样更符合面向对象的编程,下面创建了Record类。

一个关键操作:
不在同一个项目的类不能直接继承!!!
需要如下操作:

  1. 将BankUIForm项目右击属性,设置它的输出类型为类库;
  2. 右击BankUIForm项目点生成(每次修改都要重新生成);
  3. 将BankUIForm类库分别引用到ReaderForm和WriterForm项目中(打开项目,右击引用);

一、BankUIForm项目

Record 类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 文件与流
{public class Record // 这里需要设置访问属性问public 不然后面会访问不了{// 四个纪录属性public int Account { get; set; }public string FirstName { get; set; }public string LastName { get; set; }public decimal Balance { get; set; }// 构造函数public Record():this(0,string.Empty,string.Empty,0m){ }// 构造函数public Record(int account,string firstName,string lastName,decimal balance){Account = account;FirstName = firstName;LastName = lastName;Balance = balance;}}
}

BankUIForm窗体(父亲)的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace 文件与流
{public partial class BankUIForm : Form{public BankUIForm(){InitializeComponent();}public void Form1_Load(object sender, EventArgs e){}// 获取 窗体Textbox控件内容,保存在record返回public Record GetTextBoxText(){Record record = new Record(Int32.Parse(accountTextBox.Text), firstnameTextBox.Text, lastnameTextBox.Text, Decimal.Parse(balanceTextBox.Text));return record;}// 设置 窗体Textbox控件内容public void SetTextBoxText(Record record){accountTextBox.Text = record.Account.ToString();firstnameTextBox.Text = record.FirstName;lastnameTextBox.Text = record.LastName;balanceTextBox.Text = record.Balance.ToString();}// 清空 窗体Textbox控件内容public void ClearTextBox(){foreach (Control control in Controls){if(control is TextBox){((TextBox)control).Clear();}}}}
}

二、WriterForm项目:继承BankUIForm窗体,写文本

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using 文件与流;
using System.IO;namespace WriterForm
{public partial class writerForm : 文件与流.BankUIForm{public writerForm(){InitializeComponent();}FileStream filestream; // 文件流对象:水池StreamWriter streamwriter;  // 写入流:水管// 打开文件private void button1_Click(object sender, EventArgs e){DialogResult result; // 纪录窗体返回值string fileName; //纪录文件名// 创建打开文件保存窗体using (SaveFileDialog saveFile = new SaveFileDialog()){saveFile.CheckFileExists = false;result = saveFile.ShowDialog();fileName = saveFile.FileName;}// 判断是否点了确定,如果是则进入if(result== DialogResult.OK){if (fileName == null){MessageBox.Show("文件名不能为空!");}// 文件名不为空else{try{// 创建文件流filestream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);// 写流连接池塘streamwriter = new StreamWriter(filestream);enterButton.Enabled = true;saveButton.Enabled = false;}catch (Exception exp){MessageBox.Show("文件写入出错!",exp.Message);}}}}// 写入数据private void enterButton_Click(object sender, EventArgs e){try{// 将窗体正确数据写入文本Record record=GetTextBoxText();streamwriter.WriteLine("{0},{1},{2},{3}", record.Account, record.FirstName, record.LastName, record.Balance);}catch (Exception){MessageBox.Show("填写格式错误!"); ;}ClearTextBox(); // 清空textbox控件内容}//  结束输入,关闭文件流,程序退出private void exitButton_Click(object sender, EventArgs e){streamwriter.Close();Application.Exit();}}
}

三、ReaderForm项目:继承BankUIForm窗体,读文件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using 文件与流;namespace ReadForm
{public partial class ReaderFoem : 文件与流.BankUIForm{public ReaderFoem(){InitializeComponent();}FileStream filestream; // 文件流对象 :水池StreamReader streamreader; // 文件读对象:水管//  打开文件private void readButton_Click(object sender, EventArgs e){DialogResult result; // 纪录按钮结果string fileName; // 文件名// 创建文件打开窗体using (OpenFileDialog openfile=new OpenFileDialog()){result = openfile.ShowDialog(); // 返回结果fileName = openfile.FileName; //纪录文件名}// 如果按了确定按钮if(result== DialogResult.OK){try{if (fileName == null) {MessageBox.Show("文件名不能为空!");}// 文件名不为空时,开始读文件else{// 创建文件流对象,池塘filestream = new FileStream(fileName, FileMode.Open, FileAccess.Read);// 创建读对象,连接池塘streamreader = new StreamReader(filestream);nextButton.Enabled = true;readButton.Enabled = false;}}catch (Exception) // 捕获异常{MessageBox.Show("打开文件失败!");}}}// 点击下一条按钮private void nextButton_Click(object sender, EventArgs e){string str; // 保存所读取的一行数据字符串string[] values; // 保存4项数据try{str = streamreader.ReadLine(); // 读数据// 文件读完,关闭流对象if(str==null){streamreader.Close(); readButton.Enabled = true; // 此文件读取完成,可以继续读取下一个文件nextButton.Enabled = false;ClearTextBox();MessageBox.Show("文件读完 !");}else{// 将数据显示在窗体上values = str.Split(',');Record record = new Record(Int32.Parse(values[0]), values[1], values[2], Decimal.Parse(values[3]));SetTextBoxText(record);}}catch (Exception){MessageBox.Show("文件读写错误!");}}// 退出按钮private void exitButton_Click(object sender, EventArgs e){Application.Exit();}}
}

萤火虫的光点虽然微弱,但亮着便是向黑暗挑战

关注微信公众号:码农云库

进步需要交流 !!!

C# Windows桌面应用 ---- 实例:文件读写相关推荐

  1. windows桌面上删除文件夹或者文件后,显示还在,需要刷新一下才能不显示

    windows桌面上删除文件夹或者文件后,显示还在,需要刷新一下才能不显示,这是由于windows资源管理器出了问题,可以尝试以下方式 打开我的电脑,最上面 选择 查看   右侧显示  选项,点击选项 ...

  2. Unirech腾讯云国际版代充-使用RDP文件登录到Windows云服务器实例教程

    RDP是远程桌面协议的缩写,这是一种由微软开发的多通道协议,用于帮助您的本地计算机连接到远程计算机,也可以作为登陆国际版腾讯云云服务器实例的方式,下面就跟unirech一起来了解如何使用RDP文件登录 ...

  3. python写文件读文件-Python 实例:读写文件

    原标题:Python 实例:读写文件 读写文件是最常见的IO操作.内置了读写文件的函数,用法和的读写文件非常类似.在磁盘上读写文件的功能都是由提供的,现代不允许普通的程序直接操作磁盘,所以,读写文件就 ...

  4. php文件在桌面删除不了图片吗,删除windows桌面上某个应用程序的图标,意味着什么...

    删除windows桌面上某个应用程序的图标,意味着:只删除了快捷图标,对应的应用程序被保留.桌面上的图标是一种快捷方式,是Windows提供的一种快速启动程序.打开文件或文件夹的方法. 本教程操作环境 ...

  5. 查看文件二进制编码_小白也能学会系列:用python文件读写代码实例!(简单案例)...

    前言: 不久之前,从一个.dat文件中读取波形数据,通过一个自编码网络进行异常检测.所以特意在此写出来,咱从最基础的文件读写开始吧. 先说数据,是一个int16型的数组.说是数组,但是读取也并不简单. ...

  6. windows远程桌面无法拷贝文件的问题与解决方法

    windows远程桌面无法拷贝文件的问题与解决方法 参考文章: (1)windows远程桌面无法拷贝文件的问题与解决方法 (2)https://www.cnblogs.com/yanggb/p/112 ...

  7. 基于Ext的开发实例_模拟Windows桌面

    模拟Windows桌面 Ext介绍 Ext是一个强大的js类库,以前是基于雅虎UI,现在已经完全独立了. 主要包括data.widget.form.grid.dd.menu,其中最强大的应该算grid ...

  8. 关于Windows文件读写(提高读写速度)

    这几天在研究怎么才能加快windows文件读写速度,搜了很多文章,MSDN也看了不少.稍微给大家分享一下. 限制windows文件读写速度的瓶颈其实最终还是来源于我们硬盘的固有特性,磁盘本身的转速和硬 ...

  9. 解决Android Q 文件读写问题 及代码实例

    解决Android Q 及以下文件读写问题 Android Q 默认开启沙箱模式 导致出现文件读写失败 需要在使用动态权限申请的情况下在AndroidManifest.xml中加入 android:r ...

最新文章

  1. phpstudy2018升级MySQL5.5为5.7.24教程(图文)
  2. php+JQuery+Ajax简单实现页面异步刷新 (转)
  3. 计算机组成原理 — 数字集成电路(芯片)
  4. golang1.13环境变量保存路径 go env -w
  5. 电子产品设计流程_产品设计“学习、就业、留学”全攻略
  6. python requests post提交数据报错
  7. SpringMVC 实例应用 -- 不同方式控制器实现与参数传递
  8. 自己动手写cpu 光盘_自己动手写CPU配套源码
  9. php 前端模板 yii,php – Yii2高级模板:添加独立网页
  10. LINUX下类似画图板Paint的工具
  11. 项目管理其实可以简单一点——项目风险
  12. bootdo框架首页解析
  13. 奥运期间证券期货业网络与信息安全突发事件应急预案(一)
  14. Web服务器(Apache)与Servlet容器(Tomcat)
  15. excel从只有省市县的地址中分别提取省、市、县
  16. 运维工程师到底是个啥?
  17. android简历!写给即将正在找工作的Android攻城狮,已拿offer
  18. frame组件+pack()来布局定位组件,实例讲解
  19. sql文字转换全拼_取汉字全拼的SQL函数
  20. 橙瓜大数据发掘好书,25个网站小说排行榜,百万人打分

热门文章

  1. 力扣网-罗马数字转整数
  2. 为什么北京人和上海人都成了“杭漂“?
  3. win10如何去掉电脑桌面快捷方式图标小箭头?(强迫症必看)--附还原方法
  4. 基于android的在线音乐播放器app设计
  5. AutoFac基本使用-笔记
  6. Odoo与浪潮合资研发PS Cloud之如何在Odoo中进行搜索引擎优化(5)
  7. Windows中cmd命令界面执行sqlmap总是报错“missing a mandatory option(......)”
  8. IFC中的轴网(IfcGrid)
  9. multisim红绿灯元器件在哪里_Multisim交通灯仿真电路图
  10. 原生与H5混合式开发详解