保存在运行时创建的c# winform控件

本文关键字:winform 控件 创建 存在 运行时 保存 | 更新日期: 2023-09-27 18:12:57

我创建了winform及其控件,该控件是基于传递给表单的一些数据在运行时创建的。
我不知道要创建的控件的数量,也不知道控件的类型。
数据传递形成只是文本,我做了一些条件来检查创建标签或文本框或按钮。

我想保存这个控件的名称,位置,文本。这个控件可以是文本框,按钮,标签,组合框。

我怎么才能做到呢?如果XmlSerializer可以在这种情况下有效?如果有,如何使用?
谁能给我一点代码或链接?

保存在运行时创建的c# winform控件

控件不是为保存而设计的。你不能对控件本身这样做,但如果你写一个类,包含你需要的任何控件的细节,那么你可以保存和使用它们,无论你想要什么。只需将它们标记为可序列化的,并将它们提供给流写入器和读取器(https://msdn.microsoft.com/en-gb/library/ms233843.aspx)

[Serializable]
class ControlFactory
{
    enum ControlType
    {
        TextBox
    }
    ControlType Type {get;set;}
    Point Position {get;set;}
    //etc.
    Control Create()
    {
        switch(Type)
        {
            case ControlType.TextBox:
                TextBox txt = new Textbox();
                // apply settings
                return txt;
        }
    }
}