2013-02-26 75 views
1

我嘗試序列化PropertyGrid並將結果寫入XML文件。最後,XML文件幾乎是空的;
XML文件
序列化PropertyGrid(SerializeToXML)失敗

<?xml version="1.0" encoding="utf-8"?> 
<MyBookCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> 


我的代碼;

private void btnSave_Click(object sender, EventArgs e) 
{ 
    MyBookCollection MyBooks = new MyBookCollection(); 

    SerializeToXML(MyBooks); 
} 

public void SerializeToXML(MyBookCollection MyBooks) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(MyBookCollection)); 
    TextWriter textWriter = new StreamWriter(@"D:\BookInfo.xml"); 
    serializer.Serialize(textWriter, MyBooks); 
    textWriter.Close(); 
} 
} 

[Serializable] 
public class MyBookCollection 
{ 
    string m_Title; 
    [Category("Book Titles")] 
    [ReadOnly(true)] 
    public string Title 
    { 
     get { return m_Title; } 
     set { m_Caption = Title; } 
    } 
} 


什麼問題或者如何做的更好
語言:C#

+0

隨着代碼的寫入,btnSave_Click()只是創建並序列化一個空的MyBookCollection對象? – Larry 2013-02-26 15:42:35

+0

是的。請參閱下面的評論。 – 2013-02-26 15:50:36

回答

1

你有沒有試圖讓.SelectedObject產權這種方式?

private void btnSave_Click(object sender, EventArgs e) 
{ 
    var MyBooks = myProertyGrid.SelectedObject as MyBookCollection; 
    SerializeToXML(MyBooks); 
} 

不幸的是PropertyGrid不會綁定屬性更改。

+0

優秀。這就是訣竅!有用並接受你的答案。 – 2013-02-26 16:13:49

0

我看不出有什麼不對的XML。 您的XML序列化是好的!

您只會看到您的MyBookCollection節點,因爲對象中沒有其他數據!

親切的問候,維姆

+0

如何獲取填充的對象。 PropertyGrid包含所有數據,'SelectedObject'設置爲'MyBookCollection'。 – 2013-02-26 15:49:33