如何将按钮属性列表保存为xml文件

本文关键字:保存 xml 文件 列表 属性 按钮 | 更新日期: 2023-09-27 18:12:19

我在面板中有100个按钮。这些按钮在点击时改变背景颜色。我已经把这些按钮列了一张表。

    public void buttonList()
    {
        List<Button> panelButtonList = this.panel1.Controls.OfType<Button>().ToList();
    }

我想在按下保存按钮时将这100个按钮中的每个按钮的当前背景色写入一个文件。我正在学习xml最适合这个吗?我到哪里去找信息?我似乎找不到很多信息。

如何将按钮属性列表保存为xml文件

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

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

@Nimesh已经建议以二进制文件格式存储对象属性。看看这个的答案。代码用VB语言编写。你可以使用一些在线代码转换工具将其转换为c#

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

您可以像下面这样定义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 Instance来标识。

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

  [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; }
    }
}

使用controllitemconfig类将您的按钮数据导出为XML并通过它读取