[英]How to serialize a control by XMLSerializer in C#
我正在開發一個應用程序,用戶可以將一些控件(按鈕、標簽和...)動態添加到面板,然后將表單與所有添加的控件一起保存。 為了保存我使用 XMLSerializer 但它給了我這個錯誤
不能序列化 System.ComponentModel.Component.Site 類型的 System.ComponentModel.ISite 成員,因為它是一個接口。
我想知道如何將控件保存在 XML 文件中? 如果不可能,有沒有其他方法可以做到這一點?
編輯:(已解決)
我找到了一個很好的項目,這正是我正在尋找的:
謝謝
控件有幾十個屬性。 創建控件時,您只設置了一些屬性,其余的保持默認。 您只需要保存指定的屬性。
創建一個類來存儲所需的屬性:
public class ControlValueObject
{
public string Type { get; set; }
public string Text { get; set; }
public int Top { get; set; }
public int Left { get; set; }
// Add the properties you need
}
然后創建這些對象的集合並序列化它:
var label = new Label { Text = "Sample", Top = 10, Left = 20 };
var button = new Button { Text = "Click", Top = 40, Left = 20 };
panel.Controls.Add(label);
panel.Controls.Add(button);
var controls = panel.Controls.OfType<Control>()
.Select(c => new ControlValueObject { Type = c.GetType().Name, Text = c.Text, Left = c.Left, Top = c.Top })
.ToList();
var ser = new XmlSerializer(controls.GetType());
ser.Serialize(stream, controls);
如何進行反序列化,我想,你會猜到的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.