【问题标题】:How to save a list of buttons properties as an xml file?如何将按钮属性列表保存为 xml 文件?
【发布时间】:2014-07-10 04:23:19
【问题描述】:

我在一个面板中有 100 个按钮。这些按钮在单击时会改变背景颜色。我已经列出了这些按钮。

    public void buttonList()
    {

        List<Button> panelButtonList = this.panel1.Controls.OfType<Button>().ToList();

    }

当我按下保存按钮时,我想将这 100 个按钮中的每一个的当前背景色写入文件。我正在学习 xml 最适合这个吗?我在哪里可以找到我似乎找不到的信息。任何帮助将不胜感激。

【问题讨论】:

  • 创建文件后您将如何处理它?一个简单的 CSV 文件也可以满足您的目的。
  • 我同意@shree.pat18 如果您要按照与您编写文件相同的顺序处理文件,我会将其保存到普通的逗号分隔文本文件中,然后当您想从文件中重置颜色只需再次按顺序处理即可
  • 基本上在文件写入后。我想将其表示为树视图节点。然后,当我单击树视图节点时,文件将加载并更改面板中按钮的背景颜色。 CSV 会为此工作吗?
  • 序列化按钮。这是将对象转换为 xml 的一种非常好的方法。
  • 序列化按钮object? ......请不要(你真的不能)......你需要一个颜色列表......只是序列化这个 - 任何文件格式都可以,从你现在可以理解和实施的最简单开始(如果它是每行只有一种颜色或颜色分量的文本文件,它很好,因为你只是在玩弄权......!?)

标签: c# winforms


【解决方案1】:

是的,您可以将类对象保存为 xml 或二进制文件格式。要以 xml 格式存储对象,您需要使用 XML SerializationBinary Serialization 作为二进制格式化程序。

但是,将整个按钮对象存储在文件中并不是一个好主意,您应该只存储一些必需的属性而不是整个类对象。顺便说一句,某些控件和类不支持以 XML 和二进制格式序列化。

@Nimesh 已经建议以二进制文件格式存储您的对象属性。看这个answer代码是用VB语言写的。您可以使用一些在线代码转换器将其转换为 C# tool

虽然,二进制序列化比 xml 序列化快得多。

【讨论】:

    【解决方案2】:

    你可以像下面这样定义一个 xml

    <ControlItemConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Instance name="buttonName1">
    <_bColor>16777215</_bColor>
    <_fColor>-16761747</_fColor>    
    <Text>Text1</Text>
    </Instance>
    <Instance name="buttonName2">
     <_bColor>16777215</_bColor>
    <_fColor>-16761747</_fColor>
    <Text>Text2</Text>
    </Instance></ControlItemConfig>
    

    您的按钮将由以下类 ControlItemConfig 实例标识。

    创建一个可序列化的类,如下所示

      [Serializable]
    public class ControlItemConfig
    {
        public List<Instance> InstanceCollection { get; set; }
        class Instance
        {
            public Instance()
            {
                _bColor = string.Empty;
                _fColor = string.Empty;
                Text = string.Empty;
                Name =string.Empty;
            }
            public string _bColor { get; set; }
            public string _fColor { get; set; }
            public string Text { get; set; }
    
    
            public string Name { get; set; }
        }
    }
    

    使用 ControlItemConfig 类将按钮数据导出到 XML 并通过它读取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      相关资源
      最近更新 更多