求助:winform子窗体控件值保存的问题

问题描述

一个主窗体,两三个子窗体,通过主窗体打开子窗体编辑里面textbox中的内容,然后保存关闭子窗体。主窗体调用子窗体里面的值进行运算。求教各位大神,程序运行时,该如何实现保存子窗体里面textbox控件的值?程序退出时,该如何保存所有窗体里面的值?新手上路,全靠自己摸索,还望大家不吝赐教,先谢谢了!

解决方案

解决方案二:
在主窗体里定义一个全局的变量即可。publicstaticstringtxt=null;在子窗体关闭的时候。MainForm.txt=textbox1.Text;在主窗体的时候再读取这个MainForm.txt就可以了。
解决方案三:
-------------------------------------------------------------------------------------------
解决方案四:
引用1楼cjdxhc的回复:

在主窗体里定义一个全局的变量即可。publicstaticstringtxt=null;在子窗体关闭的时候。MainForm.txt=textbox1.Text;在主窗体的时候再读取这个MainForm.txt就可以了。

您的方法可以帮我解决一部分问题,谢谢。但是当我关闭子窗体(此时主窗口还在运行)再重新打开,里面的值又变成原来的默认值了,这个怎么解决?
解决方案五:
引用2楼FoxDave的回复:

-------------------------------------------------------------------------------------------

谢谢回复,票投了,链接看了,传值问题我已经搞定,我想问的是该怎么保存form2中控件的值,下次打开的时候看到的是最后一次输入的值。
解决方案六:
查了一些资料,这个是不是需要用XML保存?
解决方案七:
xml;txt;ini;db都可以保存
解决方案八:
引用4楼zzk2129的回复:

Quote: 引用2楼FoxDave的回复:
-------------------------------------------------------------------------------------------

谢谢回复,票投了,链接看了,传值问题我已经搞定,我想问的是该怎么保存form2中控件的值,下次打开的时候看到的是最后一次输入的值。

对的常态化保存,那你需要保存到程序的配置文件,如XML,或者文本文件中一般是用于配置程序的文件,形式多种多样,就看你怎么存怎么取了
解决方案九:
其实就是窗体间传值的问题。
解决方案十:
引用6楼wyd1520的回复:

xml;txt;ini;db都可以保存


解决方案十一:
C#对XML很好的支持。建议使用
解决方案十二:
http://blog.csdn.net/jiankunking/article/details/17992159
解决方案十三:
引用8楼duanzi_peng的回复:

其实就是窗体间传值的问题。

链接打不开,可以说的详细一点吗?谢谢!
解决方案十四:
XML保存可以。或者你直接把子窗体定义为主窗体的全局私有成员。
解决方案十五:
引用7楼FoxDave的回复:

Quote: 引用4楼zzk2129的回复:
Quote: 引用2楼FoxDave的回复:
-------------------------------------------------------------------------------------------

谢谢回复,票投了,链接看了,传值问题我已经搞定,我想问的是该怎么保存form2中控件的值,下次打开的时候看到的是最后一次输入的值。

对的常态化保存,那你需要保存到程序的配置文件,如XML,或者文本文件中一般是用于配置程序的文件,形式多种多样,就看你怎么存怎么取了

可以简单介绍一种方式么?初学者实在不知道从哪里下手。
解决方案:
确实方法太多了。任意一种保存数据的方式都能实现。给一个看起来规范点的方法:读写INI文件。下面是一个类,提供了INI文件的读写操作。publicclassINIClass{publicstringinipath;[DllImport("kernel32")]privatestaticexternlongWritePrivateProfileString(stringsection,stringkey,stringval,stringfilePath);[DllImport("kernel32")]privatestaticexternintGetPrivateProfileString(stringsection,stringkey,stringdef,StringBuilderretVal,intsize,stringfilePath);///<summary>///构造方法///</summary>///<paramname="INIPath">文件路径</param>publicINIClass(stringINIPath){inipath=INIPath;}///<summary>///写入INI文件///</summary>///<paramname="Section">项目名称(如[TypeName])</param>///<paramname="Key">键</param>///<paramname="Value">值</param>publicvoidIniWriteValue(stringSection,stringKey,stringValue){WritePrivateProfileString(Section,Key,Value,this.inipath);}///<summary>///读出INI文件///</summary>///<paramname="Section">项目名称(如[TypeName])</param>///<paramname="Key">键</param>publicstringIniReadValue(stringSection,stringKey){StringBuildertemp=newStringBuilder(500);inti=GetPrivateProfileString(Section,Key,"",temp,500,this.inipath);returntemp.ToString();}///<summary>///验证文件是否存在///</summary>///<returns>布尔值</returns>publicboolExistINIFile(){returnFile.Exists(inipath);}}

使用的时候直接调用就可以了
解决方案:
首先思路就有问题不要在程序退出时保存所有窗口里的值因为这时候可能某些窗口早就关闭了,或者从未打开过前台控件是前台控件,后台变量是后台变量你应该将窗口中的控件和一组全局变量关联起来,创建并打开窗口的时候用全局变量给控件赋值,关闭窗口的时候将控件值更新回全局变量,程序退出的时候全局变量写入文件,打开程序的时候读文件给全局变量赋值.就这么简单至于到底用什么文件,形式就多了.比如xml,比如txt,比如excel,数据库文件,二进制文件,都是可以的.看你会用哪个就用哪个.
解决方案:
引用16楼Z65443344的回复:

首先思路就有问题不要在程序退出时保存所有窗口里的值因为这时候可能某些窗口早就关闭了,或者从未打开过前台控件是前台控件,后台变量是后台变量你应该将窗口中的控件和一组全局变量关联起来,创建并打开窗口的时候用全局变量给控件赋值,关闭窗口的时候将控件值更新回全局变量,程序退出的时候全局变量写入文件,打开程序的时候读文件给全局变量赋值.就这么简单至于到底用什么文件,形式就多了.比如xml,比如txt,比如excel,数据库文件,二进制文件,都是可以的.看你会用哪个就用哪个.

您的思路我可以理解,但是C#怎么声明全局变量呢?
解决方案:
引用16楼Z65443344的回复:

首先思路就有问题不要在程序退出时保存所有窗口里的值因为这时候可能某些窗口早就关闭了,或者从未打开过前台控件是前台控件,后台变量是后台变量你应该将窗口中的控件和一组全局变量关联起来,创建并打开窗口的时候用全局变量给控件赋值,关闭窗口的时候将控件值更新回全局变量,程序退出的时候全局变量写入文件,打开程序的时候读文件给全局变量赋值.就这么简单至于到底用什么文件,形式就多了.比如xml,比如txt,比如excel,数据库文件,二进制文件,都是可以的.看你会用哪个就用哪个.

请原谅我这个新手,什么文件形式的存储都不会。。。。。可以教教我怎么用excel保存么?

时间: 2024-09-14 10:41:47

求助:winform子窗体控件值保存的问题的相关文章

C#根据句柄改变窗体控件值

原文:C#根据句柄改变窗体控件值 需求是这样,有个程序界面我们需要通过自己的程序持续输入数据,界面如图. 可以获得控件的句柄而用钩子写入值.这里需要用到spy++工具.在VS的工具下有个spy++工具,打开如下图 通过这个工具可以获得窗体的句柄,当然这里获得的句柄只能用于测试,因为.net开发的程序窗体每次打开句柄都会变,都需要重新获得.这个工具的用处在于找一个控件的前一句柄控件和后一句柄控件. 一.引用 //寻找目标进程窗口 [DllImport("USER32.DLL")] pub

WinForm 清空界面控件值的小技巧

在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件, 尤其是TextBox控件比较多的时候,代码里面是不是要设置每个控件的Text属性值为空呢?下面我用这个例子,来探讨下清空界面控件值的小技巧.而且 还能复用.不必每个窗体都做这些枯燥.无聊的工作. 一般的做法是在清除控件的事件里面添加下面这样的代码: 代码Code highlighting produced by Actipro CodeHighlighter

求助!请教窗体控件渐进显示

问题描述 C#窗体控件如何做到渐进显示,例如从上到下,从左到右等.拜托各位了,刚接触C#,求学中,请大家帮忙! 解决方案 解决方案二:刚刚接触都想搞窗体弹出方式的重绘,佩服佩服解决方案三:改变窗体坐标.解决方案四:我问的是控件的渐进显示啊.不是窗体

求助 js获取 datalist控件值..........................

问题描述 目前我做了个嵌套datalist绑定显示在里面datalist中有个hidden控件生成的代码如下.<inputname="dlModule$ctl01$dlOperation$ctl01$lblAfter"type="hidden"id="dlModule_ctl01_dlOperation_ctl01_lblAfter"value="0"/>原控件为:<inputid="lblAfte

asp.net中C# WinForm 判断窗体控件是否修改过

自定义代码如下  代码如下 复制代码 interface IModify { bool IsModified { get; } } class TextBoxEx : TextBox, IModify { private bool isModified = false; public bool IsModified { get { return isModified; } } protected override void OnTextChanged(EventArgs e) { this.is

C# WinForm 判断窗体控件是否修改过

本文转载:http://www.cnblogs.com/LinFx/archive/2011/12/23/2299895.html   1.自定义控件, 和接口 interface IModify {bool IsModified { get; } } class TextBoxEx : TextBox, IModify {private bool isModified = false; public bool IsModified {get { return isModified; } } p

link如何保存并且恢复程序里面所有的窗体控件的值

问题描述 link如何保存并且恢复程序里面所有的窗体控件的值 link如何保存并且恢复程序里面所有的窗体控件的值 最好用LINK来实现的,代码? 解决方案 直接保存到配置文件就可以了.要什么linq呢?

编码-C#中线程里调用winform上的控件,问题。求助。

问题描述 C#中线程里调用winform上的控件,问题.求助. 废话不多说,我直接贴代码了.程序很简单.我摘抄的网上的. 上图是个界面. 然后程序里先是一个类.如下: class ClientThread { Encoding encoding = Encoding.GetEncoding("GB2312"); private Socket client; public string data = null; private byte[] receiveBytes = new byte

c#winform窗体控件工具栏

问题描述 c#winform窗体控件工具栏 解决方案 ToolStrip,你最好能够找本C#教程或者PDF教程读一下,这些控件vs都自带的.