如何在winforms C#中自动保存和自动加载所有属性?

如何在winforms C#中自动保存和自动加载所有属性?,c#,winforms,C#,Winforms,如何在关闭时自动保存所有属性winforms,以及在加载时自动加载所有属性winforms?C# 使用系统; 使用System.Collections.Generic; 使用系统组件模型; 使用系统数据; 使用系统图; 使用系统文本; 使用System.Windows.Forms; 使用System.IO; 命名空间控件 { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } 私有无效按钮1\u单击(对象发送者,事件参数e) { for(int i=0;i

如何在关闭时自动保存所有属性winforms,以及在加载时自动加载所有属性winforms?C#

使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用系统文本;
使用System.Windows.Forms;
使用System.IO;
命名空间控件
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
for(int i=0;i
我不知道
表单
基类中内置了任何自动方法,但自己添加并不困难

您可以点击窗口加载并关闭事件,将所有相关属性缓存到备份存储,然后稍后重新加载


将事件处理程序注册到
窗体。加载
窗体。关闭
事件处理程序。当发生
Form.Closing
时,将表单状态保存到文件或数据库中。当发生
Form.Load
时,检查是否存在保存状态,如果存在,则从保存状态重新加载。您必须手动编码要保存的属性

一个方便的方法是将这些个性化设置svae到

示例代码段:

//save the winform position and size upon closing
private void Form1_FormClosed(
   object sender, FormClosedEventArgs e)
{
    Properties.Settings.Default.FormPosition = this.Location;
    Properties.Settings.Default.FormSize = this.Size;
    Properties.Settings.Default.Save();
}

//load the winform position and size upon loading
private void Form1_Load(object sender, EventArgs e)
{
    this.Size = Properties.Settings.Default.FormSize;
    this.Location = Properties.Settings.Default.FormPosition;
}
更多参考资料:

    • 你的问题有点不清楚,但是

      如果需要保存/加载表单布局,请查看

      如果需要保存/加载对象/类,请查看

      编辑:

      这将向您展示如何保持表单属性的某些设置

      也看看

      所有这些都将引导你朝着你需要的方向前进

      我认为这里的主要目标是

      • 确定何时保存和何时保存 加载,以及存储/检索的位置 这些设置
      • 您是否按存储这些设置 用户?在数据库中?在xml文件中
      • 接下来,您需要确定 你将成为 保存/还原每个控件。简单的 位置/大小设置可能无法剪切 它作为控件将具有不同的功能 复杂性(按钮、文本框、, Gridview,ListView)
      • 现在你需要弄清楚如何 迭代窗体上的所有控件。 按钮、文本框、面板、控件 在控件中(面板中的控件),以及 甚至你的用户控制。这 可以使用递归来完成
      • 现在,您需要决定 xml文件的结构(如果您选择 使用xml)。这应该差不多 就像你看到的一样,看起来像一棵树 看看表格,还有它的 控件及其控件,作为 树形结构

        • 将表单等对象转换为可以保存的对象的过程称为序列化。不幸的是,我认为在WinForm中没有现成的方式来序列化表单。我确实发现了,因为表单也是控件,所以您可以使用代码序列化属性。

          您指的是窗口大小、位置、模式等属性?所有元素都是吗?Textbox1,Textbox2,Textbox3?可以开始使用函数AutoLoad();是否可以使用函数SaveAll()退出?如果您允许用户对表单控件属性(如dock、font等)进行个性化设置,您也可以保存它们,但您必须手动对其进行编码以进行保存和加载。astander为使用序列化的自动化方法提供了很好的参考,序列化是另一种选择<代码>自动加载
和退出
可以替换为表单事件
表单。加载
表单。关闭
就像Ryan Michela提到的那样。我喜欢xml对象序列化,但如何保存和加载?
//save the winform position and size upon closing
private void Form1_FormClosed(
   object sender, FormClosedEventArgs e)
{
    Properties.Settings.Default.FormPosition = this.Location;
    Properties.Settings.Default.FormSize = this.Size;
    Properties.Settings.Default.Save();
}

//load the winform position and size upon loading
private void Form1_Load(object sender, EventArgs e)
{
    this.Size = Properties.Settings.Default.FormSize;
    this.Location = Properties.Settings.Default.FormPosition;
}