问题描述
一个主窗体,两三个子窗体,通过主窗体打开子窗体编辑里面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保存么?