• C# winform如何实现数据的保存和读取


    c#winform中我们在写程序时,经常需要进行数据处理,那么数据如何保存和读取(下面我们通过序列化和反序列化的方式来实现)

    第一步:  我们建立一个winform窗体

    第二步:  构建一个外部实体类(Student类)

    第三步:从图上按钮可以发现现在我定义了两个按钮(保存参数和读取参数)保存参数对应代码DataSave(),读取参数对应(DataRead)

    DataSava方法代码如下:

    DataRead方法如下

    最后展示完整代码内容

    结果演示:

     第一步:   按F5启动应用程序:

     第二步:修改控件中的数据并且点击保存参数

     第三步:保存成功后点击读取参数,在图片的右边会产生一个与原始窗体一样的窗体

    1.首先创建窗体:

    2.再新建一个实体类:

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Threading.Tasks;
    6. namespace SlandDs
    7. {
    8. //允许本类可以被序列化
    9. [Serializable]
    10. public class Student
    11. {
    12. //定义了五个属性分别是姓名,年龄,性别,班级,爱好
    13. public string Name { get; set; }
    14. public int Age { get; set; }
    15. public string Six { get; set; }
    16. public string ClaslRoom { get; set; }
    17. public string Hoppy { get; set; }
    18. }
    19. }

    3.第三步:从图上按钮可以发现现在我定义了两个按钮(保存参数和读取参数)保存参数对应代码DataSave(),读取参数对应(DataRead)

    DataSava方法代码如下:

    1. private bool DataSava(string fileName)
    2. {
    3. try
    4. {
    5. if (student == null)
    6. {
    7. student = new Student();
    8. }
    9. //首先把控件的值赋值给对象(也就是序列化)
    10. student.Name = txt_name.Text;
    11. student.Age = Convert.ToInt16(num_age.Value);
    12. student.Six = txt_six.Text;
    13. student.ClaslRoom = txt_classroom.Text;
    14. student.Hoppy = txt_hobby.Text;
    15. //第二步就是要把这些内容保存在一个数据文件中(后缀名为.dat)
    16. string FileDir = System.Windows.Forms.Application.StartupPath + "\\studnet\\";
    17. if (!Directory.Exists(FileDir))
    18. {
    19. Directory.CreateDirectory(FileDir);
    20. }
    21. //将学生数据保存在数据文件中
    22. mSerialize.FilePath = fileName;
    23. string Ren;
    24. mSerialize.SaveObj(student, out Ren);
    25. MessageBox.Show("学生数据保存成功", "提示");
    26. return true;
    27. }
    28. catch (System.Exception ex)
    29. {
    30. MessageBox.Show(ex.Message);
    31. return false;
    32. }
    33. }

    DataRead方法如下

    1. private bool DataRead(string fileName)
    2. {
    3. try
    4. {
    5. if(student==null)
    6. {
    7. student = new Student();
    8. }
    9. else if (mSerialize == null)
    10. {
    11. mSerialize = new MSerialize(null);
    12. }
    13. string FileDir = System.Windows.Forms.Application.StartupPath + "\\studnet\\";
    14. if (!Directory.Exists(FileDir))
    15. {
    16. MessageBox.Show("student文件不存在");
    17. return false;
    18. }
    19. mSerialize.FilePath = fileName;
    20. string Ren;
    21. if (mSerialize.LoadObj(out student,out Ren)==true)
    22. {
    23. txt_name.Text = student.Name;
    24. num_age.Value = student.Age;
    25. txt_six.Text = student.Six;
    26. txt_classroom.Text = student.ClaslRoom;
    27. txt_hobby.Text = student.Hoppy;
    28. MessageBox.Show("读取学生数据成功","提示");
    29. }
    30. else
    31. MessageBox.Show("读取学生文件失败","提示");
    32. Form1 form = new Form1();
    33. form.dataRead(ref student);
    34. form.ShowDialog();
    35. return true;
    36. }
    37. catch (System.Exception ex)
    38. {
    39. MessageBox.Show(ex.Message);
    40. return false;
    41. }
    42. }

    最后展示完整代码内容

    1. using System;
    2. using System.IO;
    3. using System.Windows.Forms;
    4. using WRO;
    5. namespace SlandDs
    6. {
    7. public partial class Form1 : Form
    8. {
    9. static string FileName = System.Windows.Forms.Application.StartupPath + "\\studnet\\" + "studnet.dat";
    10. //必须保证在同一个命名控件下
    11. Student student;
    12. MSerialize mSerialize;
    13. public Form1()
    14. {
    15. mSerialize = new MSerialize(FileName);
    16. InitializeComponent();
    17. }
    18. public void dataRead(ref Student _student)
    19. {
    20. try
    21. {
    22. if (_student==null)
    23. {
    24. _student = new Student();
    25. }
    26. txt_name.Text = _student.Name;
    27. num_age.Value = _student.Age;
    28. txt_six.Text = _student.Six;
    29. txt_classroom.Text = _student.ClaslRoom;
    30. txt_hobby.Text = _student.Hoppy;
    31. }
    32. catch (System.Exception ex)
    33. {
    34. MessageBox.Show(ex.Message);
    35. }
    36. }
    37. //保存
    38. private void button_保存_Click(object sender, EventArgs e)
    39. {
    40. DataSava(FileName);
    41. }
    42. private bool DataSava(string fileName)
    43. {
    44. try
    45. {
    46. if (student == null)
    47. {
    48. student = new Student();
    49. }
    50. //首先把控件的值赋值给对象(也就是序列化)
    51. student.Name = txt_name.Text;
    52. student.Age = Convert.ToInt16(num_age.Value);
    53. student.Six = txt_six.Text;
    54. student.ClaslRoom = txt_classroom.Text;
    55. student.Hoppy = txt_hobby.Text;
    56. //第二步就是要把这些内容保存在一个数据文件中(后缀名为.dat)
    57. string FileDir = System.Windows.Forms.Application.StartupPath + "\\studnet\\";
    58. if (!Directory.Exists(FileDir))
    59. {
    60. Directory.CreateDirectory(FileDir);
    61. }
    62. //将学生数据保存在数据文件中
    63. mSerialize.FilePath = fileName;
    64. string Ren;
    65. mSerialize.SaveObj(student, out Ren);
    66. MessageBox.Show("学生数据保存成功", "提示");
    67. return true;
    68. }
    69. catch (System.Exception ex)
    70. {
    71. MessageBox.Show(ex.Message);
    72. return false;
    73. }
    74. }
    75. //读取
    76. private void button_读取_Click(object sender, EventArgs e)
    77. {
    78. DataRead(FileName);
    79. }
    80. private bool DataRead(string fileName)
    81. {
    82. try
    83. {
    84. if(student==null)
    85. {
    86. student = new Student();
    87. }
    88. else if (mSerialize == null)
    89. {
    90. mSerialize = new MSerialize(null);
    91. }
    92. string FileDir = System.Windows.Forms.Application.StartupPath + "\\studnet\\";
    93. if (!Directory.Exists(FileDir))
    94. {
    95. MessageBox.Show("student文件不存在");
    96. return false;
    97. }
    98. mSerialize.FilePath = fileName;
    99. string Ren;
    100. if (mSerialize.LoadObj(out student,out Ren)==true)
    101. {
    102. txt_name.Text = student.Name;
    103. num_age.Value = student.Age;
    104. txt_six.Text = student.Six;
    105. txt_classroom.Text = student.ClaslRoom;
    106. txt_hobby.Text = student.Hoppy;
    107. MessageBox.Show("读取学生数据成功","提示");
    108. }
    109. else
    110. MessageBox.Show("读取学生文件失败","提示");
    111. Form1 form = new Form1();
    112. form.dataRead(ref student);
    113. form.ShowDialog();
    114. return true;
    115. }
    116. catch (System.Exception ex)
    117. {
    118. MessageBox.Show(ex.Message);
    119. return false;
    120. }
    121. }
    122. }
    123. }

    结果演示:

    按F5启动应用程序:

    第二步:修改控件中的数据并且点击保存参数

    第三步:保存成功后点击读取参数,在图片的右边会产生一个与原始窗体一样的窗体

  • 相关阅读:
    C语言:指针(二)
    为什么我的idea commit changes变样了,很难用现在
    Vue太难啦!从入门到放弃day06——Vue前端路由
    springboot嵌入式数据库derby初探
    C++ Reference: Standard C++ Library reference: C Library: clocale
    深入解析Kafka消息传递的可靠性保证机制
    vue使用gitshot生成gif
    星火大模型AI接口Spring中项目中使用【星火、AIGC】
    【Spring篇】简述IoC入门案例,DI入门案例
    61-70==c++知识点
  • 原文地址:https://blog.csdn.net/weixin_42026861/article/details/133963510