C# – User Control To XML – Kodu

UserControl To XML isimli Part – 1 , Part – 2 , Part – 3 bölümlerindeki projenin kodlarını aşağıda bulabilirsiniz.. Designer.cs class kodları ile beraber kullanabilirsiniz..

UserControl1.Designer.cs

UserControl1.Designer.cs


namespace UserControlsToXml.UserControls

{

    partial class UserControl1

    {

        ///

        /// Required designer variable.

        ///

        private System.ComponentModel.IContainer components = null;

 

        ///

        /// Clean up any resources being used.

        ///

        /// true if managed resources should be disposed; otherwise, false.

        protected override void Dispose(bool disposing)

        {

            if (disposing && (components != null))

            {

                components.Dispose();

            }

            base.Dispose(disposing);

        }

 

        #region Component Designer generated code

 

        ///

        /// Required method for Designer support - do not modify

        /// the contents of this method with the code editor.

        ///

        private void InitializeComponent()

        {

            this.button1 = new System.Windows.Forms.Button();

            this.label1 = new System.Windows.Forms.Label();

            this.textBox1 = new System.Windows.Forms.TextBox();

            this.SuspendLayout();

            //

            // button1

            //

            this.button1.Dock = System.Windows.Forms.DockStyle.Right;

            this.button1.Location = new System.Drawing.Point(301, 0);

            this.button1.Name = "button1";

            this.button1.Size = new System.Drawing.Size(75, 20);

            this.button1.TabIndex = 0;

            this.button1.Text = "button1";

            this.button1.UseVisualStyleBackColor = true;

            this.button1.Click += new System.EventHandler(this.button1_Click);

            //

            // label1

            //

            this.label1.Dock = System.Windows.Forms.DockStyle.Left;

            this.label1.Location = new System.Drawing.Point(0, 0);

            this.label1.Name = "label1";

            this.label1.Padding = new System.Windows.Forms.Padding(5, 0, 0, 0);

            this.label1.Size = new System.Drawing.Size(109, 20);

            this.label1.TabIndex = 1;

            this.label1.Text = "label1";

            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;

            //

            // textBox1

            //

            this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;

            this.textBox1.Location = new System.Drawing.Point(109, 0);

            this.textBox1.Name = "textBox1";

            this.textBox1.Size = new System.Drawing.Size(192, 20);

            this.textBox1.TabIndex = 2;

            //

            // UserControl1

            //

            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            this.Controls.Add(this.textBox1);

            this.Controls.Add(this.label1);

            this.Controls.Add(this.button1);

            this.Name = "UserControl1";

            this.Size = new System.Drawing.Size(376, 20);

            this.ResumeLayout(false);

            this.PerformLayout();

 

        }

 

        #endregion

 

        public System.Windows.Forms.Button button1;

        public System.Windows.Forms.Label label1;

        public System.Windows.Forms.TextBox textBox1;

 

    }

}


UserControl1.cs


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Data;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Xml.Linq;

 

namespace UserControlsToXml.UserControls

{

    public partial class UserControl1 : UserControl, IMyUserControl

    {

        private Random rnd = new Random();

        private ComboBox _MyCombobox = null;

 

        public UserControl1()

        {

            InitializeComponent();

 

            this.label1.Text = "Label-" + rnd.Next(0, 100).ToString();

            this.textBox1.Text = "Textbox-" + rnd.Next(0, 100).ToString();

            this.button1.Text = "Button-" + rnd.Next(0, 100).ToString();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            MessageBox.Show(this.textBox1.Text);

        }

        private void _MyCombobox_SelectedIndexChanged(object sender, EventArgs e)

        {

            if (this.MyCombobox.SelectedItem != null)

                this.textBox1.Text = this.MyCombobox.SelectedItem.ToString();

        }

 

        #region IMyUserControl Members

 

        public System.Xml.Linq.XElement GetXml()

        {

            XElement xe = new XElement("control",

                new XAttribute("label", this.label1.Text),

                new XAttribute("textbox", this.textBox1.Text),

                new XAttribute("button", this.button1.Text),

                new XAttribute("type", this.GetType().ToString()));

 

            return xe;

        }

        public Control GetControlInstance(XElement xe)

        {

            string labelStr = xe.Attribute("label").Value;

            string textboxStr = xe.Attribute("textbox").Value;

            string buttonStr = xe.Attribute("button").Value;

 

            this.label1.Text = labelStr;

            this.textBox1.Text = textboxStr;

            this.button1.Text = buttonStr;

 

            return this;

        }

        public ComboBox MyCombobox

        {

            get

            {

                return this._MyCombobox;

            }

            set

            {

                this._MyCombobox = value;

 

                if(this._MyCombobox != null)

                    this._MyCombobox.SelectedIndexChanged += new EventHandler(_MyCombobox_SelectedIndexChanged);

            }

        }

 

        #endregion

    }

}


UserControl2.Designer.cs


namespace UserControlsToXml.UserControls

{

    partial class UserControl2

    {

        ///

        /// Required designer variable.

        ///

        private System.ComponentModel.IContainer components = null;

 

        ///

        /// Clean up any resources being used.

        ///

        /// true if managed resources should be disposed; otherwise, false.

        protected override void Dispose(bool disposing)

        {

            if (disposing && (components != null))

            {

                components.Dispose();

            }

            base.Dispose(disposing);

        }

 

        #region Component Designer generated code

 

        ///

        /// Required method for Designer support - do not modify

        /// the contents of this method with the code editor.

        ///

        private void InitializeComponent()

        {

            this.label1 = new System.Windows.Forms.Label();

            this.button1 = new System.Windows.Forms.Button();

            this.SuspendLayout();

            //

            // label1

            //

            this.label1.Dock = System.Windows.Forms.DockStyle.Fill;

            this.label1.Location = new System.Drawing.Point(0, 0);

            this.label1.Name = "label1";

            this.label1.Padding = new System.Windows.Forms.Padding(5, 0, 0, 0);

            this.label1.Size = new System.Drawing.Size(301, 20);

            this.label1.TabIndex = 4;

            this.label1.Text = "label1";

            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;

            //

            // button1

            //

            this.button1.Dock = System.Windows.Forms.DockStyle.Right;

            this.button1.Location = new System.Drawing.Point(301, 0);

            this.button1.Name = "button1";

            this.button1.Size = new System.Drawing.Size(75, 20);

            this.button1.TabIndex = 3;

            this.button1.Text = "button1";

            this.button1.UseVisualStyleBackColor = true;

            this.button1.Click += new System.EventHandler(this.button1_Click);

            //

            // UserControl2

            //

            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            this.Controls.Add(this.label1);

            this.Controls.Add(this.button1);

            this.Name = "UserControl2";

            this.Size = new System.Drawing.Size(376, 20);

            this.ResumeLayout(false);

 

        }

 

        #endregion

 

        public System.Windows.Forms.Label label1;

        public System.Windows.Forms.Button button1;

 

    }

}


UserControl2.cs


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Data;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Xml.Linq;

 

namespace UserControlsToXml.UserControls

{

    public partial class UserControl2 : UserControl, IMyUserControl

    {

        private Random rnd = new Random();

        private ComboBox _MyCombobox = null;

 

        public UserControl2()

        {

            InitializeComponent();

 

            this.label1.Text = "Label-" + rnd.Next(0, 100).ToString();

            this.button1.Text = "Button-" + rnd.Next(0, 100).ToString();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            MessageBox.Show(this.label1.Text);

        }

        private void _MyCombobox_SelectedIndexChanged(object sender, EventArgs e)

        {

            if (this.MyCombobox.SelectedItem != null)

                this.label1.Text = this.MyCombobox.SelectedItem.ToString();

        }

 

 

        #region IMyUserControl Members

 

        public System.Xml.Linq.XElement GetXml()

        {

            XElement xe = new XElement("control",

                 new XAttribute("label", this.label1.Text),

                 new XAttribute("button", this.button1.Text),

                 new XAttribute("type", this.GetType().ToString()));

 

            return xe;

        }

        public Control GetControlInstance(XElement xe)

        {

            UserControl2 uc2 = new UserControl2();

 

            string labelStr = xe.Attribute("label").Value;

            string buttonStr = xe.Attribute("button").Value;

 

            uc2.label1.Text = labelStr;

            uc2.button1.Text = buttonStr;

 

            return uc2;

        }

        public ComboBox MyCombobox

        {

            get

            {

                return this._MyCombobox;

            }

            set

            {

                this._MyCombobox = value;

 

                if (this._MyCombobox != null)

                    this._MyCombobox.SelectedIndexChanged += new EventHandler(_MyCombobox_SelectedIndexChanged);

            }

        }

 

        #endregion

    }

}


MyContainerPanel.cs


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Xml.Linq;

 

namespace UserControlsToXml

{

    public class MyContainerPanel : System.Windows.Forms.Panel

    {

        private int y = 0;

        //public ComboBox CMB { get; set; }

 

 

        private object CreateObjectInstance(string typeName)

        {

            Type typ = Type.GetType(typeName);

            object obj = Activator.CreateInstance(typ);

 

            //Form'daki combobox nesnesi oluşturulan UserControl'e bağlanır..

            //((IMyUserControl)obj).MyCombobox = this.CMB;

 

            return obj;

        }

 

 

        public void AddMyUserControlToPanel(string typeName)

        {

            object obj = this.CreateObjectInstance(typeName);

            Control ctrl = (Control)obj;

 

            this.AddControlToPanel(ctrl);

        }

        public void AddControlToPanel(Control ctrl)

        {

            if (ctrl != null)

            {

                ctrl.Top = y;

                this.Controls.Add(ctrl);

                y += 20;

            }

        }

 

 

        public void CreateControlXmlFile(string path)

        {

            XDocument xDoc = new XDocument(

                    new XDeclaration("1.0", "ISO-8859-9", null));

 

            XElement root = new XElement("controls");

 

            foreach (Control ctrl in this.Controls)

            {

                XElement xe = ((IMyUserControl)ctrl).GetXml();

                root.Add(xe);

            }

 

            xDoc.Add(root);

            xDoc.Save(path);

            xDoc = null;

        }

        public void ReadControlXmlFile(string path)

        {

            XDocument xDoc = XDocument.Load(path);

            XElement root = xDoc.Root;

 

            this.Controls.Clear();

            this.y = 0;

 

            foreach (XElement xe in root.Elements())

            {

                string typeName = xe.Attribute("type").Value;

                object obj = this.CreateObjectInstance(typeName);

 

                Control ctrl = ((IMyUserControl)obj).GetControlInstance(xe);

 

                this.AddControlToPanel(ctrl);

            }

        }

    }

}


IMyUserControl.cs


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml.Linq;

using System.Windows.Forms;

 

namespace UserControlsToXml

{

    public interface IMyUserControl

    {

        XElement GetXml();

        Control GetControlInstance(XElement xe);

 

        ComboBox MyCombobox { get; set; }

    }

}


Form1.Designer.cs


namespace UserControlsToXml

{

    partial class Form1

    {

        ///

        /// Required designer variable.

        ///

        private System.ComponentModel.IContainer components = null;

 

        ///

        /// Clean up any resources being used.

        ///

        /// true if managed resources should be disposed; otherwise, false.

        protected override void Dispose(bool disposing)

        {

            if (disposing && (components != null))

            {

                components.Dispose();

            }

            base.Dispose(disposing);

        }

 

        #region Windows Form Designer generated code

 

        ///

        /// Required method for Designer support - do not modify

        /// the contents of this method with the code editor.

        ///

        private void InitializeComponent()

        {

            this.splitContainer1 = new System.Windows.Forms.SplitContainer();

            this.button2 = new System.Windows.Forms.Button();

            this.button1 = new System.Windows.Forms.Button();

            this.listBox1 = new System.Windows.Forms.ListBox();

            this.myContainerPanel1 = new UserControlsToXml.MyContainerPanel();

            this.comboBox1 = new System.Windows.Forms.ComboBox();

            this.splitContainer1.Panel1.SuspendLayout();

            this.splitContainer1.Panel2.SuspendLayout();

            this.splitContainer1.SuspendLayout();

            this.SuspendLayout();

            //

            // splitContainer1

            //

            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;

            this.splitContainer1.Location = new System.Drawing.Point(0, 0);

            this.splitContainer1.Name = "splitContainer1";

            //

            // splitContainer1.Panel1

            //

            this.splitContainer1.Panel1.Controls.Add(this.button2);

            this.splitContainer1.Panel1.Controls.Add(this.button1);

            this.splitContainer1.Panel1.Controls.Add(this.listBox1);

            //

            // splitContainer1.Panel2

            //

            this.splitContainer1.Panel2.Controls.Add(this.myContainerPanel1);

            this.splitContainer1.Panel2.Controls.Add(this.comboBox1);

            this.splitContainer1.Size = new System.Drawing.Size(570, 310);

            this.splitContainer1.SplitterDistance = 190;

            this.splitContainer1.TabIndex = 0;

            //

            // button2

            //

            this.button2.Location = new System.Drawing.Point(31, 275);

            this.button2.Name = "button2";

            this.button2.Size = new System.Drawing.Size(75, 23);

            this.button2.TabIndex = 2;

            this.button2.Text = "XML Oku";

            this.button2.UseVisualStyleBackColor = true;

            this.button2.Click += new System.EventHandler(this.button2_Click);

            //

            // button1

            //

            this.button1.Location = new System.Drawing.Point(112, 275);

            this.button1.Name = "button1";

            this.button1.Size = new System.Drawing.Size(75, 23);

            this.button1.TabIndex = 1;

            this.button1.Text = "XML Yaz";

            this.button1.UseVisualStyleBackColor = true;

            this.button1.Click += new System.EventHandler(this.button1_Click);

            //

            // listBox1

            //

            this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;

            this.listBox1.FormattingEnabled = true;

            this.listBox1.Location = new System.Drawing.Point(0, 0);

            this.listBox1.Name = "listBox1";

            this.listBox1.Size = new System.Drawing.Size(190, 303);

            this.listBox1.TabIndex = 0;

            this.listBox1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDoubleClick);

            //

            // myContainerPanel1

            //

            this.myContainerPanel1.BackColor = System.Drawing.Color.Silver;

            this.myContainerPanel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;

            this.myContainerPanel1.Dock = System.Windows.Forms.DockStyle.Fill;

            this.myContainerPanel1.Location = new System.Drawing.Point(0, 21);

            this.myContainerPanel1.Name = "myContainerPanel1";

            this.myContainerPanel1.Size = new System.Drawing.Size(376, 289);

            this.myContainerPanel1.TabIndex = 1;

            this.myContainerPanel1.ControlAdded += new System.Windows.Forms.ControlEventHandler(this.myContainerPanel1_ControlAdded);

            //

            // comboBox1

            //

            this.comboBox1.BackColor = System.Drawing.Color.LightCoral;

            this.comboBox1.Dock = System.Windows.Forms.DockStyle.Top;

            this.comboBox1.FormattingEnabled = true;

            this.comboBox1.Items.AddRange(new object[] {

            "Test1",

            "Test2",

            "Test3"});

            this.comboBox1.Location = new System.Drawing.Point(0, 0);

            this.comboBox1.Name = "comboBox1";

            this.comboBox1.Size = new System.Drawing.Size(376, 21);

            this.comboBox1.TabIndex = 0;

            //

            // Form1

            //

            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            this.ClientSize = new System.Drawing.Size(570, 310);

            this.Controls.Add(this.splitContainer1);

            this.Name = "Form1";

            this.Text = "Form1";

            this.Load += new System.EventHandler(this.Form1_Load);

            this.splitContainer1.Panel1.ResumeLayout(false);

            this.splitContainer1.Panel2.ResumeLayout(false);

            this.splitContainer1.ResumeLayout(false);

            this.ResumeLayout(false);

 

        }

 

        #endregion

 

        private System.Windows.Forms.SplitContainer splitContainer1;

        private System.Windows.Forms.ListBox listBox1;

        private System.Windows.Forms.Button button1;

        private System.Windows.Forms.Button button2;

        private MyContainerPanel myContainerPanel1;

        private System.Windows.Forms.ComboBox comboBox1;

    }

}

 


Form1.cs


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Xml.Linq;

 

namespace UserControlsToXml

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

 

        private void Form1_Load(object sender, EventArgs e)

        {

            //this.myContainerPanel1.CMB = this.comboBox1;

 

            string[] userControlTypeList =

                new string[2]

                {

                    "UserControlsToXml.UserControls.UserControl1",

                    "UserControlsToXml.UserControls.UserControl2"

                };

 

            this.listBox1.Items.Clear();

 

            foreach (string userControlType in userControlTypeList)

            {

                this.listBox1.Items.Add(userControlType);

            }

        }

        private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            if (this.listBox1.SelectedItem != null)

            {

                string typeName = this.listBox1.SelectedItem.ToString();

                this.myContainerPanel1.AddMyUserControlToPanel(typeName);

            }

        }

        private void button1_Click(object sender, EventArgs e)

        {

            this.myContainerPanel1.CreateControlXmlFile(Application.StartupPath + "\\" + "Test.xml");

        }

        private void button2_Click(object sender, EventArgs e)

        {

            this.myContainerPanel1.ReadControlXmlFile(Application.StartupPath + "\\" + "Test.xml");

        }

 

        private void myContainerPanel1_ControlAdded(object sender, ControlEventArgs e)

        {

            ((IMyUserControl)e.Control).MyCombobox = this.comboBox1;

        }

    }

}


Reklamlar

Web Sayfasına iFrame’li Yönlendirici Buton Ekleme