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

时间:2015-09-15 08:33:42

标签: c# winforms

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

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

我该怎么做?如果XmlSerializer在这种情况下有效?如果是的话怎么用?
任何人都可以给我一些代码或链接吗?

1 个答案:

答案 0 :(得分:2)

控件不是为了保存而设计的。所以你不能用控件本身来做这件事,但是如果你编写一个包含控件所需细节的类,那么你可以根据需要保存和使用它们。只需将它们标记为可序列化并将它们提供给流编写器和读取器(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;
        }
    }
}