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

牧童吃五谷 2019-06-24 10:35:47
一个WinForm窗体程序,上面有好几个.Net控件,我想把所有控件的属性保存到硬盘文件中,使得下一次程序启动时,根据保存的文件内容重新设置各个控件的属性,该怎么做好呢?
...全文
3332 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)
ASP.NET ASP.NET 概述 ASP.NET 是一个统一的 Web 开发模型,它包括您使用尽可能少的代码生成企业级 Web 应用程序所必需的各种服务。ASP.NET 作为 .NET Framework 的一部分提供。当您编写 ASP.NET 应用程序的代码时,可以访问 .NET Framework 的类。您可以使用与公共语言运行库 (CLR) 兼容的任何语言来编写应用程序的代码,这些语言包括 Microsoft Visual Basic、C#、JScript .NET 和 J#。使用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的 ASP.NET 应用程序。 ASP.NET 包括: 页和控件框架 ASP.NET 编译器 安全基础结构 状态管理功能 应用程序配置 运行状况监视和性能功能 调试支持 XML Web services 框架 可扩展的宿主环境和应用程序生命周期管理 可扩展的设计器环境 页和控件框架 ASP.NET 页和控件框架是一种编程框架,它在 Web 服务器上运行,可以动态地生成和呈现 ASP.NET 网页。可以从任何浏览器或客户端设备请求 ASP.NET 网页,ASP.NET 会向请求浏览器呈现标记(例如 HTML)。通常,您可以对多个浏览器使用相同的页,因为 ASP.NET 会为发出请求的浏览器呈现适当的标记。但是,您可以针对诸如 Microsoft Internet Explorer 6 的特定浏览器设计 ASP.NET 网页,并利用该浏览器的功能。ASP.NET 支持基于 Web 的设备(如移动电话、手持型计算机和个人数字助理 (PDA))的移动控件。 ASP.NET 网页是完全面向对象的。在 ASP.NET 网页,可以使用属性、方法和事件来处理 HTML 元素。ASP.NET 页框架为响应在服务器上运行的代码的客户端事件提供统一的模型,从而使您不必考虑基于 Web 的应用程序固有的客户端和服务器隔离的实现细节。该框架还会在页处理生命周期自动维护页及该页上控件的状态。有关更多信息,请参见 ASP.NET 网页概述。 使用 ASP.NET 页和控件框架还可以将常用的 UI 功能封装成易于使用且可重用的控件控件只需编写一次,即可用于许多页并集成到 ASP.NET 网页。这些控件在呈现期间放入 ASP.NET 网页。 ASP.NET 页和控件框架还提供各种功能,以便可以通过主题和外观来控制网站的整体外观和感觉。可以先定义主题和外观,然后在页面级或控件级应用这些主题和外观。有关更多信息,请参见 ASP.NET 主题和外观概述。 除了主题外,还可以定义母版页,以使应用程序的页具有一致的布局。一个母版页可以定义您希望应用程序的所有页(或一组页)所具有的布局和标准行为。然后可以创建包含要显示的页特定内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并,产生将母版页的布局与内容页的内容组合在一起的输出。有关更多信息,请参见 ASP.NET 母版页概述。 ASP.NET 编译器 所有 ASP.NET 代码都经过了编译,可提供强类型、性能优化和早期绑定以及其他优点。代码一经编译,公共语言运行库会进一步将 ASP.NET 编译为本机代码,从而提供增强的性能。 ASP.NET 包括一个编译器,该编译器将包括页和控件在内的所有应用程序组件编译成一个程序集,之后 ASP.NET 宿主环境可以使用该程序集来处理用户请求。有关更多信息,请参见 ASP.NET 编译概述。 安全基础结构 除了 .NET 的安全功能外,ASP.NET 还提供了高级的安全基础结构,以便对用户进行身份验证和授权,并执行其他与安全相关的功能。您可以使用由 IIS 提供的 Windows 身份验证对用户进行身份验证,也可以通过您自己的用户数据库使用 ASP.NET Forms 身份验证和 ASP.NET 成员资格来管理身份验证。此外,可以使用 Windows 组或您自己的自定义角色数据库(使用 ASP.NET 角色)来管理 Web 应用程序的功能和信息方面的授权。您可以根据应用程序的需要方便地移除、添加或替换这些方案。有关更多信息,请参见下列主题: ASP.NET 网站安全性 使用成员资格管理用户 使用角色管理授权 Forms 身份验证提供程序 ASP.NET 始终使用特定的 Windows 标识运行,因此,您可以通过使用 Windows 功能(例如 NTFS 访问控制列表 (ACL)、数据库权限等等)来保护应用程序的安全。有关 ASP.NET 标识的更多信息,请参见配置 ASP.NET 进程标识和 ASP.NET 模拟。 状态管理功能 ASP.NET

111,112

社区成员

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

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

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