http://kmlinux.fjfi.cvut.cz/~culikzde/pw/Properties-2019-11-18.zip using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; using System.ComponentModel; namespace Properties { public class Data { [DisplayName("Jmeno")] [Description("Jmeno objektu")] public string Name { get; set; } [Category ("Souradnice")] public int X { get; set; } [Category("Souradnice")] public int Y { get; set; } [Category("Souradnice")] [Browsable(false)] public int Z { get; set; } public Color SomeColor { get; set; } // public Font SomeFont { get; set; } public bool OK { get; set; } public enum Shape { line, rectangle, ellipse }; public Shape SomeShape { get; set; } // public Point EntryPoint { get; set; } public Size EntrySize { get; set; } public Data () { SomeColor = Color.Orange; // SomeFont = new Font (FontFamily.GenericSansSerif, 14); SomeShape = Shape.line; // EntryPoint = new Point (); EntrySize = new Size(); } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Xml.Serialization; namespace Properties { public partial class Form1 : Form { Data data; public Form1() { InitializeComponent(); data = new Data (); data.Name = "abc"; data.X = 1; data.Y = 2; data.Z = data.Y + 1; propertyGrid1.SelectedObject = data; // using System.IO; // using System.Xml.Serialization; StringWriter f = new StringWriter (); XmlSerializer w = new XmlSerializer (typeof (Data)); w.Serialize(f, data); string s = f.ToString(); textBox1.AppendText(s + "\n\r"); } private void SaveToolStripMenuItem_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog () == DialogResult.OK) { // using System.IO; // using System.Xml.Serialization; StreamWriter w = new StreamWriter(saveFileDialog1.FileName); XmlSerializer t = new XmlSerializer(typeof(Data)); t.Serialize(w, data); w.Close(); } } private void OpenToolStripMenuItem_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { // using System.IO; // using System.Xml.Serialization; StreamReader r = new StreamReader (openFileDialog1.FileName); XmlSerializer t = new XmlSerializer(typeof(Data)); data = (Data) t.Deserialize (r); propertyGrid1.SelectedObject = data; r.Close(); } } } }