VB – Yanıp Sönen Etiket (Flashing Label) Kontrolü Oluşturma

Bu yazımızda yanıp sönen ve kullanıcının ilgilini çeken bir etiket(Label) kontrolü geliştireceğiz. Projelerimde çoğu zaman böyle bir ifadeye, kullanıcının mutlaka okuması gereken, dikkat etmesi gereken yazılara ihtiyaç duyarım. Çoğu uygulamada da bu şekilde ifadeler mevcuttur. Yaygın olarak bu ifadeler uygulama içinde “Kalın(Bold)” ve “Altı Çizili(Underline)” olarak ayarlanırlar. Ya da kırmızı olarak renklendirilirler. Fakat yaptığım projelerde karşılaştığım kadarı ile bu belirginleştirme, kullanıcıların farketmesini sağlamıyor. Ya da kullanıcıların alışkanlıklarından ötürü dikkatlerinin oraya çekilmesini sağlamıyor. Bu konuda düşünürken, bu konuda parlak bir fikir aklıma geldi. 🙂 Evettt gerçekten parlak, hatta yanıp sönen :)) Sonunda yanıp sönen bir etiket(Label) kontrolü geliştirmeye karar verdim. Sonunda nasıl birşey mi çıktı. Buyrun aşağıdadır.

kmb-udemy-reklam

HighlightLabel.vb
Public Class HighlightLabel
Inherits Label

#Region “Initialize”

Private components As System.ComponentModel.IContainer
Friend WithEvents tmrRepater As System.Windows.Forms.Timer

Public Sub New()
Me.InitializeComponent()
End Sub

Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.tmrRepater = New System.Windows.Forms.Timer(Me.components)
Me.SuspendLayout()
‘tmrRepater        
Me.tmrRepater.Interval = 5
‘        ‘HighlightLabel      
Me.ResumeLayout(False)

End Sub

#End Region

#Region “Events”

Public Event HighlightSpeedChanged(ByVal value As Integer)

#End Region

#Region “Properties”

Private _HighlightSpeed As Integer = 5
”’ I??kland?rman?n h?z?n? belirler.    
”’ (Minimum : 1 Maksimum : 50)  
”’   
Public Property HighlightSpeed() As Integer
Get
Return _HighlightSpeed
End Get
Set(ByVal value As Integer)

If (value < 1) Then value = 1
If (value > 50) Then value = 50

_HighlightSpeed = value

RaiseEvent HighlightSpeedChanged(value)

End Set
End Property

Private _IsHighlightEnabled As Boolean = True
Public Property IsHighlightEnabled() As Boolean
Get
Return _IsHighlightEnabled
End Get
Set(ByVal value As Boolean)
_IsHighlightEnabled = value

If (Not _IsHighlightEnabled) Then
Me.StopLabelHighlight()
End If

End Set
End Property

#End Region

#Region “Local Variables”

Dim red As Integer = 0
Dim green As Integer = 0
Dim blue As Integer = 0
Dim feeder As Integer = Me.HighlightSpeed

#End Region

#Region “Public Methods”

”’
”’ E?er IsHighlightEnabled = True ise ???kland?rmay? ba?lat?r.  
”’     
Public Sub StartLabelHighlight()

If (Me.IsHighlightEnabled) Then
Me.tmrRepater.Enabled = True
Me.tmrRepater.Start()
End If

End Sub

”’ I??kland?rmay? durdurur.      
Public Sub StopLabelHighlight()

Me.tmrRepater.Enabled = False
Me.tmrRepater.Stop()

End Sub

#End Region

#Region “Event Handlers”

Private Sub tmrRepater_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrRepater.Tick

If (red + feeder >= 255) Then
feeder = (-1) * Me.HighlightSpeed
red = 255
ElseIf (red + feeder <= 0) Then
feeder = (1) * Me.HighlightSpeed
red = 0
End If

red += feeder

Me.ForeColor = Color.FromArgb(red, green, blue)
End Sub

#End Region

End Class

image Kontrolü test etmek için gerekli test formu

 

Form3.Designer.vb
Partial Class Form3
Inherits System.Windows.Forms.Form

‘Form overrides dispose to clean up the component list.     
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub

‘Required by the Windows Form Designer    
Private components As System.ComponentModel.IContainer

‘NOTE: The following procedure is required by the Windows Form Designer    ‘It can be modified using the Windows Form Designer.      ‘Do not modify it using the code editor.     _    
Private Sub InitializeComponent()
Me.btnHizlandir = New System.Windows.Forms.Button()
Me.btnYavaslat = New System.Windows.Forms.Button()
Me.Label1 = New System.Windows.Forms.Label()
Me.HighlightLabel1 = New WindowsApplication1.HighlightLabel()
Me.SuspendLayout()

‘btnHizlandir       

Me.btnHizlandir.Location = New System.Drawing.Point(301, 97)
Me.btnHizlandir.Name = “btnHizlandir”
Me.btnHizlandir.Size = New System.Drawing.Size(75, 23)
Me.btnHizlandir.TabIndex = 1
Me.btnHizlandir.Text = “H?zland?r”
Me.btnHizlandir.UseVisualStyleBackColor = True

‘btnYavaslat        ‘        
Me.btnYavaslat.Location = New System.Drawing.Point(220, 97)
Me.btnYavaslat.Name = “btnYavaslat”
Me.btnYavaslat.Size = New System.Drawing.Size(75, 23)
Me.btnYavaslat.TabIndex = 2
Me.btnYavaslat.Text = “Yava?lat”
Me.btnYavaslat.UseVisualStyleBackColor = True        ‘        
‘Label1        ‘        
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(166, 102)
Me.Label1.Name = “Label1”
Me.Label1.Size = New System.Drawing.Size(31, 13)
Me.Label1.TabIndex = 3
Me.Label1.Text = “H?z : “        ‘        
‘HighlightLabel1        ‘        
Me.HighlightLabel1.AutoSize = True
Me.HighlightLabel1.Font = New System.Drawing.Font(“Microsoft Sans Serif”, 18.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(162, Byte))
Me.HighlightLabel1.HighlightSpeed = 5
Me.HighlightLabel1.IsHighlightEnabled = True
Me.HighlightLabel1.Location = New System.Drawing.Point(12, 32)
Me.HighlightLabel1.Name = “HighlightLabel1”
Me.HighlightLabel1.Size = New System.Drawing.Size(372, 29)
Me.HighlightLabel1.TabIndex = 0
Me.HighlightLabel1.Text = “Bu bir yan?p s?nen uyar? etiketidir.”        ‘        ‘Form3        ‘        
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(388, 132)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.btnYavaslat)
Me.Controls.Add(Me.btnHizlandir)
Me.Controls.Add(Me.HighlightLabel1)
Me.Name = “Form3”
Me.Text = “Form3”
Me.ResumeLayout(False)
Me.PerformLayout()

End Sub
Friend WithEvents HighlightLabel1 As WindowsApplication1.HighlightLabel
Friend WithEvents btnHizlandir As System.Windows.Forms.Button
Friend WithEvents btnYavaslat As System.Windows.Forms.Button
Friend WithEvents Label1 As System.Windows.Forms.Label
End Class

 

Form3.vb
Public Class Form3

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.HighlightLabel1.StartLabelHighlight()

‘Me.HighlightLabel1.StopLabelHighlight()

‘Me.HighlightLabel1.IsHighlightEnabled = True        
‘Me.HighlightLabel1.HighlightSpeed = 10

AddHandler Me.HighlightLabel1.HighlightSpeedChanged, AddressOf HighlightLabel1_HighlightSpeedChanged

Me.Label1.Text = “H?z : “ & Me.HighlightLabel1.HighlightSpeed.ToString()

End Sub

Private Sub btnHizlandir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHizlandir.Click
Me.HighlightLabel1.HighlightSpeed += 5
End Sub

Private Sub btnYavaslat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnYavaslat.Click
Me.HighlightLabel1.HighlightSpeed -= 5
End Sub

Private Sub HighlightLabel1_HighlightSpeedChanged(ByVal value As Integer)
Me.Label1.Text = “H?z : “ & value.ToString()
End Sub

End Class

Sonuç :

HighlightSpeed” özelliği ile hızlandırabilir ya da yavaşlatabilirsiniz..

IsHighlightEnabled” özelliği ile etkisizleştirebilirsiniz..

HighlightSpeedChanged” olayını yönetebilirsiniz..

 Resim 1Resim 1  Resim 2Resim 2
 Resim 3Resim 3 Resim 4Resim 4
 Resim 5Resim 5
Reklamlar

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;

        }

    }

}