C#关于将winform界面的所有内容导出的问题 导到Excel里面吧,这样格式好控制一点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 界面动态布局,考虑使用xml文件。第一种情况,按顺序导出即可,ListBox的项每个队员文本文件的一行,这样重新加载按行解析也很方便第二种,使用xml文件,比如:<control name="" location="" value=""></control>以这种格式的形式,把控件名、位置、内容等存储下来 进展:第一种情况下,已经实现导出,但是布局有点不整齐,C#里有没有关于txt文档的location之类的方法? 导出的同时打开txt文档,这个怎么实现呢? 1.txt里只是文本,没有格式,想要格式,自己加空格和换行2.dat是自定义扩展名,里面存的是二进制吧,这东西没有任何系统软件能够打开,一般是自己程序保存一些数据,然后可以自己读出来重新赋值给变量的时候用的3.打开txt文件,可以使用prosess.start(路径),系统会默认用文本文档打开,不过你就不要想导出的同时打开了,应该在导出之后打开才对 Class1 c=new Class1(); /// <summary> /// 序列化Class1类,并保存,相当于存档 /// </summary> private void classSave() { FileStream fw = new FileStream("D:\\xxx.dat", FileMode.Create, FileAccess.Write); BinaryFormatter formatter_w = new BinaryFormatter(); formatter_w.Serialize(fw, c); fw.Close(); } /// <summary> /// 从文件反序列化读取存档 /// </summary> private void classLoad() { FileStream fr = new FileStream("D:\\xxx.dat", FileMode.Open, FileAccess.Read); BinaryFormatter formatter_r = new BinaryFormatter(); c = (Class1)formatter_r.Deserialize(fr); fr.Close(); } using System.Runtime.Serialization.Formatters.Binary;using System.IO; 楼上的可行。 就是不能混淆。一混淆就出问题。如果需要混淆也可以。需要写一个不混淆的dll 作为序列化和反序列化 1.确实是加了些空格和换行,把布局调得看得舒服了,目前就这样做吧。2.就是想程序保存些数据,然后读出来给界面上的变量赋值的。具体要怎么做呢,现在在按照导出txt文件的方法做,感觉不太对,而且保存的文件打开是可以看到的,不像dat文件那样,打开是二进制文件。有没有小例子给参考下呢?3.在执行完导出操作后,程序自动为用户打开txt文件,方便查看导出的内容。刚试了用prosess.start(路径),提示“找不到应用程序”,百度,路径里文件一般都是类似exe的应用程序,应该是怎样的呢?谢谢回复 1.格式得你自己定,可以是空格,竖线或者其他;2.遍历Controls,判断控件的类型是否是你需要的,然后获取相应的值。得到值之后,问题就简单了,只要根据需要进一步处理就行。 参考下,试过之后再回复,谢谢帮忙这是怎么回事啊,我加过 [Serializable]了 有个比较傻的办法,通过反射的方式获取你winform上面所有的控件,然后把每一个控件保存成为一个xml文件的节点,控件的所有属性都作为节点的属性。。 可以考虑xml或者json这类结构不需要读取dat恢复状态的话,选择你关注的那些属性就可以了 嗯,楼主对序列化的了解更深了一步。为了方便未来查看本问题的同学,这里我多嘴两句:”类型未标记为可序列化“问题如何产生以及解决,可以点下面的地址:(答案在21楼)http://bbs.csdn.net/topics/120098269#不过,我觉得还是自己定义一个类,把要保存的数据收集到这个类里面,然后再序列化会比较好。 菜单栏的Item前的圆点怎么设置? 我新建了一个控制台项目怎么载入windows应用程序 如何计算链接数据库所需要的时间,另外想问问,是不是计算出期间所需的时间后,如果制作progressBar进度条,谢谢! 紧急求助!本地C#程序是否能操作远程Access数据库? 请各位前辈进来指点一下迷津 这个代码如何解读? 自己做的C#客户端服务器桌面程序,客户端登录一段时间后连不上服务器 请问在c#怎么样才能输入字符串呢?很多数字的 如何将一个超大的整数转为十六进制,并能反正转换回来 请教有关C#的WMI中问题(急) oracle blob类型字段值怎么取? 一个button事件的重复触发
第二种,使用xml文件,比如:
<control name="" location="" value=""></control>
以这种格式的形式,把控件名、位置、内容等存储下来
导出的同时打开txt文档,这个怎么实现呢?
2.dat是自定义扩展名,里面存的是二进制吧,这东西没有任何系统软件能够打开,一般是自己程序保存一些数据,然后可以自己读出来重新赋值给变量的时候用的
3.打开txt文件,可以使用prosess.start(路径),系统会默认用文本文档打开,不过你就不要想导出的同时打开了,应该在导出之后打开才对
Class1 c=new Class1(); /// <summary>
/// 序列化Class1类,并保存,相当于存档
/// </summary>
private void classSave()
{
FileStream fw = new FileStream("D:\\xxx.dat", FileMode.Create, FileAccess.Write);
BinaryFormatter formatter_w = new BinaryFormatter();
formatter_w.Serialize(fw, c);
fw.Close();
}
/// <summary>
/// 从文件反序列化读取存档
/// </summary>
private void classLoad()
{
FileStream fr = new FileStream("D:\\xxx.dat", FileMode.Open, FileAccess.Read);
BinaryFormatter formatter_r = new BinaryFormatter();
c = (Class1)formatter_r.Deserialize(fr);
fr.Close();
}
using System.IO;
如果需要混淆也可以。需要写一个不混淆的dll 作为序列化和反序列化
2.就是想程序保存些数据,然后读出来给界面上的变量赋值的。具体要怎么做呢,现在在按照导出txt文件的方法做,感觉不太对,而且保存的文件打开是可以看到的,不像dat文件那样,打开是二进制文件。有没有小例子给参考下呢?
3.在执行完导出操作后,程序自动为用户打开txt文件,方便查看导出的内容。刚试了用prosess.start(路径),提示“找不到应用程序”,百度,路径里文件一般都是类似exe的应用程序,应该是怎样的呢?
谢谢回复
2.遍历Controls,判断控件的类型是否是你需要的,然后获取相应的值。得到值之后,问题就简单了,只要根据需要进一步处理就行。
了
不需要读取dat恢复状态的话,选择你关注的那些属性就可以了
为了方便未来查看本问题的同学,这里我多嘴两句:
”类型未标记为可序列化“问题如何产生以及解决,可以点下面的地址:(答案在21楼)
http://bbs.csdn.net/topics/120098269#不过,我觉得还是自己定义一个类,把要保存的数据收集到这个类里面,然后再序列化会比较好。