如何把C#控件的所有配置属性保存到文件中?

牧童吃五谷 2019-06-24 10:35:47
一个WinForm窗体程序,上面有好几个.Net控件,我想把所有控件的属性保存到硬盘文件中,使得下一次程序启动时,根据保存的文件内容重新设置各个控件的属性,该怎么做好呢?
...全文
3318 28 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
longjr020 2022-02-08
  • 打赏
  • 举报
回复

序列化保存有问题。比如ObjectToXml,保存color部分就报错了

xiaoxiangqing 2019-06-26
  • 打赏
  • 举报
回复
qq_32071047 2019-06-26
  • 打赏
  • 举报
回复
谢谢分享!!
aringaabb 2019-06-26
  • 打赏
  • 举报
回复
谢谢分享!!
twenty3 2019-06-25
  • 打赏
  • 举报
回复
感谢,学习了
幸福沙拉 2019-06-25
  • 打赏
  • 举报
回复
厉害!我试试看,谢谢诸位!
netharry 2019-06-25
  • 打赏
  • 举报
回复
建议用json
Tiny~ 2019-06-25
  • 打赏
  • 举报
回复
我觉得没那么麻烦呢,写入TXT文本,并将这个文件改名成不是常见的扩展名,需要的时候直接使用TXT读取一样的代码读取即可,我一直这么干的没出过问题
wangmoxhn 2019-06-24
  • 打赏
  • 举报
回复
ironpython应该是你需要的。
  • 打赏
  • 举报
回复
引用 3 楼 牧童吃五谷 的回复:
[quote=引用 1 楼 MisterTong 的回复:] 保存到xml
具体的语句写法?[/quote]兴建一个App.Config,然后百度下对这个配置文件的增删改查
极客诗人 2019-06-24
  • 打赏
  • 举报
回复
就是将这些配置数据进行存储 那么xml也好 text好 甚至丢到数据库里也好 都是可选择的
牧童吃五谷 2019-06-24
  • 打赏
  • 举报
回复
引用 1 楼 MisterTong 的回复:
保存到xml
具体的语句写法?
zijiang001 2019-06-24
  • 打赏
  • 举报
回复
循环遍历保存就行了 form.controls
kee_ 2019-06-24
  • 打赏
  • 举报
回复
保存到xml
you_du_paopao 2019-06-24
  • 打赏
  • 举报
回复
保存成xml或者setting。
weixin_44368188 2019-06-24
  • 打赏
  • 举报
回复
用插件的命令
qq_38151919 2019-06-24
  • 打赏
  • 举报
回复
我都是用插件中的命令保存的
牧童吃五谷 2019-06-24
  • 打赏
  • 举报
回复
如果能够有更简单的方法最好了
牧童吃五谷 2019-06-24
  • 打赏
  • 举报
回复
基本上只能按照这个思路了。 谢谢大家
desperaso 2019-06-24
  • 打赏
  • 举报
回复
序列化,要引用System.Runtime.Serialization

using System.Runtime.Serialization.Json;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Runtime.Serialization.Formatters.Binary;

public class Serializer
{
/// 将对象序列化为json文件
public static void ObjectToJson<T>(T t, string path) where T : class
{
DataContractJsonSerializer formatter = new DataContractJsonSerializer(typeof(T));
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate))
{
formatter.WriteObject(stream, t);
}
}

/// 将对象序列化为json字符串
public static string ObjectToJson<T>(T t) where T : class
{
DataContractJsonSerializer formatter = new DataContractJsonSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream())
{
formatter.WriteObject(stream, t);
string result = System.Text.Encoding.UTF8.GetString(stream.ToArray());
return result;
}
}

/// json字符串转成对象
public static T JsonToObject<T>(string json) where T : class
{
DataContractJsonSerializer formatter = new DataContractJsonSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(json)))
{
T result = formatter.ReadObject(stream) as T;
return result;
}
}

/// 将对象序列化为xml文件
public static void ObjectToXml<T>(T t, string path) where T : class
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate))
{
formatter.Serialize(stream, t);
}
}

/// 将对象序列化为xml字符串
public static string ObjectToXml<T>(T t) where T : class
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream())
{
formatter.Serialize(stream, t);
string result = System.Text.Encoding.UTF8.GetString(stream.ToArray());
return result;
}
}

/// 将xml文件反序列化为对象
public static T XmlToObject<T>(T t, string path) where T : class
{
XmlSerializer formatter = new XmlSerializer(typeof(T));
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate))
{
XmlReader xmlReader = new XmlTextReader(stream);
T result = formatter.Deserialize(xmlReader) as T;
return result;
}
}

/// 将xml字符串反序列化为对象
public static T XmlStrToObject<T>(T t, string str) where T : class
{
XmlSerializer formatter = new XmlSerializer(typeof(T));

StringReader xmlReader = new StringReader(str);
T result = formatter.Deserialize(xmlReader) as T;
return result;
}


/// 将对象序列化为二进制流
public static byte[] ObjectToString<T>(T t)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream stream = new MemoryStream())
{
formatter.Serialize(stream, t);
byte[] result = stream.ToArray();
return result;
}
}

/// 将二进制流反序列为类型
public static T StringToObject<T>(byte[] bytes) where T : class
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream stream = new MemoryStream(bytes, 0, bytes.Length))
{
T result = formatter.Deserialize(stream) as T;
return result;
}
}

/// 将对象序列化为文件
public static void ObjectToFile<T>(T t, string path)
{
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate))
{
formatter.Serialize(stream, t);
stream.Flush();
}
}

/// 将文件反序列化为对象
public static T FileToObject<T>(string path) where T : class
{
using (FileStream stream = new FileStream(path, FileMode.Open))
{
BinaryFormatter formatter = new BinaryFormatter();
T result = formatter.Deserialize(stream) as T;
return result;
}
}
}

加载更多回复(8)

111,093

社区成员

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

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

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