2013-02-26 126 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