C#关于将winform界面的所有内容导出的问题

a1988lourong 2014-11-11 12:01:21
情况一:
将Listbox中的所有数据以一定的格式导出到txt文件,现在不清楚的是怎么设置txt文档的内容布局?

情况二:将winform界面上多有的内容,包括ListBox中数据,textbox的内容,radiobox是否处于选中状态等等。
怎么将所有的内容导出到一个.dat文件?这个暂时没什么思路,应该也需要提前设置布局吧

求指导,谢谢。
...全文
435 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1988lourong 2014-11-15
  • 打赏
  • 举报
回复
引用 15 楼 u012036804 的回复:
嗯,楼主对序列化的了解更深了一步。 为了方便未来查看本问题的同学,这里我多嘴两句: ”类型未标记为可序列化“问题如何产生以及解决,可以点下面的地址:(答案在21楼) http://bbs.csdn.net/topics/120098269#" target="_blank">http://bbs.csdn.net/topics/120098269# 不过,我觉得还是自己定义一个类,把要保存的数据收集到这个类里面,然后再序列化会比较好。
谢谢,就是这样做的,自己定义了一个类
a1988lourong 2014-11-14
  • 打赏
  • 举报
回复
引用 9 楼 a1988lourong 的回复:
[quote=引用 6 楼 u012036804 的回复:] using System.Runtime.Serialization.Formatters.Binary; using System.IO; [quote=引用 5 楼 u012036804 的回复:]

        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();
            
        }
[/quote]参考下,试过之后再回复,谢谢帮忙[/quote]这是怎么回事啊,我加过 [Serializable] 了
心雨蒙蒙 2014-11-14
  • 打赏
  • 举报
回复
嗯,楼主对序列化的了解更深了一步。 为了方便未来查看本问题的同学,这里我多嘴两句: ”类型未标记为可序列化“问题如何产生以及解决,可以点下面的地址:(答案在21楼) http://bbs.csdn.net/topics/120098269#" target="_blank">http://bbs.csdn.net/topics/120098269# 不过,我觉得还是自己定义一个类,把要保存的数据收集到这个类里面,然后再序列化会比较好。
a1988lourong 2014-11-14
  • 打赏
  • 举报
回复
问题解决了,谢谢各位帮忙
  • 打赏
  • 举报
回复
可以考虑xml或者json这类结构 不需要读取dat恢复状态的话,选择你关注的那些属性就可以了
爱在今世 2014-11-14
  • 打赏
  • 举报
回复
有个比较傻的办法,通过反射的方式获取你winform上面所有的控件,然后把每一个控件保存成为一个xml文件的节点,控件的所有属性都作为节点的属性。。。。。
江南小鱼 2014-11-11
  • 打赏
  • 举报
回复
界面动态布局,考虑使用xml文件。 第一种情况,按顺序导出即可,ListBox的项每个队员文本文件的一行,这样重新加载按行解析也很方便 第二种,使用xml文件,比如: <control name="" location="" value=""></control> 以这种格式的形式,把控件名、位置、内容等存储下来
Pigeon汪 2014-11-11
  • 打赏
  • 举报
回复
导到Excel里面吧,这样格式好控制一点
smthgdin_020 2014-11-11
  • 打赏
  • 举报
回复
1.格式得你自己定,可以是空格,竖线或者其他; 2.遍历Controls,判断控件的类型是否是你需要的,然后获取相应的值。得到值之后,问题就简单了,只要根据需要进一步处理就行。
a1988lourong 2014-11-11
  • 打赏
  • 举报
回复
引用 6 楼 u012036804 的回复:
using System.Runtime.Serialization.Formatters.Binary; using System.IO; [quote=引用 5 楼 u012036804 的回复:]

        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();
            
        }
[/quote]参考下,试过之后再回复,谢谢帮忙
a1988lourong 2014-11-11
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
1.txt里只是文本,没有格式,想要格式,自己加空格和换行 2.dat是自定义扩展名,里面存的是二进制吧,这东西没有任何系统软件能够打开,一般是自己程序保存一些数据,然后可以自己读出来重新赋值给变量的时候用的 3.打开txt文件,可以使用prosess.start(路径),系统会默认用文本文档打开,不过你就不要想导出的同时打开了,应该在导出之后打开才对
1.确实是加了些空格和换行,把布局调得看得舒服了,目前就这样做吧。 2.就是想程序保存些数据,然后读出来给界面上的变量赋值的。具体要怎么做呢,现在在按照导出txt文件的方法做,感觉不太对,而且保存的文件打开是可以看到的,不像dat文件那样,打开是二进制文件。有没有小例子给参考下呢? 3.在执行完导出操作后,程序自动为用户打开txt文件,方便查看导出的内容。刚试了用prosess.start(路径),提示“找不到应用程序”,百度,路径里文件一般都是类似exe的应用程序,应该是怎样的呢? 谢谢回复
「已注销」 2014-11-11
  • 打赏
  • 举报
回复
楼上的可行。 就是不能混淆。一混淆就出问题。 如果需要混淆也可以。需要写一个不混淆的dll 作为序列化和反序列化
心雨蒙蒙 2014-11-11
  • 打赏
  • 举报
回复
using System.Runtime.Serialization.Formatters.Binary; using System.IO;
引用 5 楼 u012036804 的回复:

        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();
            
        }
心雨蒙蒙 2014-11-11
  • 打赏
  • 举报
回复

        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();
            
        }
於黾 2014-11-11
  • 打赏
  • 举报
回复
1.txt里只是文本,没有格式,想要格式,自己加空格和换行 2.dat是自定义扩展名,里面存的是二进制吧,这东西没有任何系统软件能够打开,一般是自己程序保存一些数据,然后可以自己读出来重新赋值给变量的时候用的 3.打开txt文件,可以使用prosess.start(路径),系统会默认用文本文档打开,不过你就不要想导出的同时打开了,应该在导出之后打开才对
a1988lourong 2014-11-11
  • 打赏
  • 举报
回复
进展:第一种情况下,已经实现导出,但是布局有点不整齐,C#里有没有关于txt文档的location之类的方法? 导出的同时打开txt文档,这个怎么实现呢?

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧