在c#中如何让窗体第二次打开时保存第一次的数据状态

就是winform窗体第二次打开时以第一次打开状态一样,意思就是说第二次打开窗体仍然保存第一次窗体上的数据!

这个一般包含两种要求:
1.新打开窗口的大小以及位置与关闭前一样.
2.新打开窗口中的控件中的数据是上次的数据.
其实这都只涉及一个问题,那就是数据的保存和读取.也就是说需要在窗口的onclose事件中将需要保存的参数的数据保存起来;而在窗口的onshow事件中将这些数据读取并赋给相应的参数即可.
你可以在窗口关闭事件onclose中将需要保存的数据保存到注册表或数据库或ini文件中去,而在窗口onshow事件中将这些数据读取出来并分别赋予相应的变量即可.
如:
关闭时保存窗口高度到x: x=form.heigt; x.savetofile;
onshow中读取x并赋值给窗口高度即可 x.readfromfile; form.height=x;
这里是伪代码需要按情况扩展.
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-05
告诉你一种模式。 单例模式。 在百度中查找单例模式,你就会明白。
如果你的分再高的话,我会抽出几分钟时间给你答案。
第2个回答  2010-05-08
搜下winform 缓存
第3个回答  2010-05-05
你好,我也是学C#的,嘿嘿,看到这个问题感觉很亲切,但是很可惜,我也不会。。。初学者,嘿嘿

在c#中如何让窗体第二次打开时保存第一次的数据状态
1.新打开窗口的大小以及位置与关闭前一样.2.新打开窗口中的控件中的数据是上次的数据.其实这都只涉及一个问题,那就是数据的保存和读取.也就是说需要在窗口的onclose事件中将需要保存的参数的数据保存起来;而在窗口的onshow事件中将这些数据读取并赋给相应的参数即可.你可以在窗口关闭事件onclose中将需要...

C#中再次打开已打开子窗体时如何使其置前?
第一种解决方式:点击完查询弹出子窗口后就使得查询按钮不可用,关闭该查询窗口后再恢复按钮可用状态 第二种方式:借助全局变量,打开查询窗口后保存成全局变量,第二次的时候就判断是否为null,每次关闭后设置为null,然后窗口是具备设置为显示窗口的属性的(具体的不记得了你点来看一下嘛)就能置于前了 ...

C# winform 关闭窗体后在打开 如何让打开的窗体还是原窗体 且打开的窗...
假设在窗口form1中打开form2.在form1中保留form2的引用 private Form2 form2 = new Form2(); private void button1_Click(object sender, EventArgs e) { form2.Show(); } form2中添加windowsClosing事件,里面这样写:private void Form2_FormClosing(object sender, FormClosingEventArg...

C#中再次打开已打开子窗体时如何使其置前?
用一个变量表示新建的子窗体,比如 mdiFrm(这个变量通常是其MDI父窗体的成员变量,因为要在父窗体中点击按钮的时候访问他)。然后根据它的相关属性,来确定是否应该新创建窗体。使用 BringToFront 把一个窗体显示在前端(这个和 TopMost 是不一样的,后者是一直顶端显示)。思想如下伪代码所示:if (mdiFr...

C#窗体应用,如何在串口设置窗口关闭后再次打开还是之前设置的界面呢
public static SerialPort sp=new SerialPort();之后在form2中就可以直接使用form1.sp来控制串口,至于保存设置,方法很多,可以用注册表或者ini(C#中对ini的读写你自己查一下很容易找到),当在form2点打开串口的时候,先将上面的这些设置保存到ini里,然后再打开,同样在form2的load里,先读取这些...

...comboBox选择的值,在我下次打开时我想让它保存我上次选中的值为默认...
首先你要会几个基本操作,然后连贯起来就好了:获取选中的值 如何保存值,可以简单写文件,但最简单是settings(自己搜一下C# settings)何时保存值,可以在选择事件中,还可以在窗口关闭事件 如何获取值,也从settings取 如何设置值 如果在选择事件中保存值,那如何避免设置值的时候无限循环(所以窗口关闭...

c#中让Windows窗体只运行一次,并在第二次启动窗体时激活该窗体
方法二:[STAThread]static void Main(string[] args){ bool isFirst;System.Threading.Mutex mutex = new System.Threading.Mutex(true, "WindowAppTest", out isFirst);\/\/这里的myApp是程序的标识,建议换成你的程序的物理路径,这样的话如果在一个操作系统中这个标志不会和其它程序冲突 if (!is...

c#中有两个窗体。
首先,新窗体(例如TestForm )要在第一个窗体定义成全局变量,例如 TestForm tf = new TestForm();然后在点按钮时例如 private void ShowTestDlgBtn_Click(object sender, EventArgs e){ tf.ShowDialog();} 这样新窗口即使关了,再点按钮,原来写的东西还是在的。刚刚试过,没问题 ...

怎么在C#中实现打开一个新窗口的同时关闭原来旧窗口
所以你在启动第一个窗提的时候就把窗体隐藏 隐藏后 你启动第二个窗体 在第2个窗体里 写:Form1 F1;在第二个窗体里的构造函数里加参数 Form1 f1 然后在函数里把参数给F1;F1 = f1;然后你就可以写登陆了 如果登陆成功 F1.Show(); 关闭Form2 this.Close();这样就可以 很简单的 ...

C# 中 窗体是默认最大化的显示 怎样才能让控件也跟着变化 在第一次打开...
1.button、label、textbox(有例外)等控件的大小和位置都不变。如果有对齐方面的要求(比如按钮需要在容器内右对齐,而其他控件需要左对齐),那么只需要调整需对齐控件的top或left属性。2.listview、richtextbox、textbox等控件通常将dock属性设置为fill,从而可以随窗体大小的改变而自动改变。

相似回答