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 enum Size { small, medium, large }; public class D { public string Text { get; set; } public double Value { get; set; } } public class C { [Browsable(true)] [DisplayName("Jmeno")] public string Name { get; set; } [Category("Souradnice")] [Description ("x-ova souradnice") ] public int X { get; set; } [Category("Souradnice")] public int Y { get; set; } [Category("Souradnice")] public int Z { get; set; } public Color color { get; set; } public Size size { get; set; } public List Notes { get; set; } public List Parameters { get; set; } public List Items { get; set; } public C() { Name = "abc"; X = 1; Y = 2; Z = 3; color = Color.Orange; size = Size.medium; Notes = new List { "def", "klm" }; Parameters = new List { 0.1, 0.2 }; Items = new List (); D item = new D (); item.Text = "nazev"; item.Value = 2.34; Items.Add (item); } } } 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 { C data; public Form1() { InitializeComponent(); data = new C (); prop.SelectedObject = data; // display (tree.Nodes, this); tree.ExpandAll (); } private void display (TreeNodeCollection target, Control widget) { TreeNode node = new TreeNode (); node.Text = widget.Name + ":" + widget.GetType().Name + " : " + widget.Text; node.Tag = widget; target.Add (node); foreach (Control c in widget.Controls) { display (node.Nodes, c); } } private void tree_NodeMouseClick (object sender, TreeNodeMouseClickEventArgs e) { prop.SelectedObject = e.Node.Tag; } private void openMenuItem_Click(object sender, EventArgs e) { if (openDialog.ShowDialog() == DialogResult.OK) { string fileName = openDialog.FileName; StreamReader r = new StreamReader (fileName); XmlSerializer t = new XmlSerializer(typeof(C)); data = (C) t.Deserialize (r); prop.SelectedObject = data; r.Close (); } } private void saveMenuItem_Click(object sender, EventArgs e) { if (saveDialog.ShowDialog() == DialogResult.OK) { string fileName = saveDialog.FileName; // using System.IO; // using System.Xml.Serialization; StreamWriter w = new StreamWriter (fileName); XmlSerializer t = new XmlSerializer (typeof (C)); t.Serialize (w, data); w.Close (); } } private void quitMenuItem_Click(object sender, EventArgs e) { Close (); } } }