Wednesday, December 29, 2010

How to check the control type at run time




using System;
using System.Drawing;
using System.Windows.Forms;
  
class CustomCheckBox: Form
{
     public static void Main()
     {
          Application.Run(new CustomCheckBox());
     }
     public CustomCheckBox()
     {
          int      cyText = Font.Height;
          int      cxText = cyText / 2;
          FontStyle[] afs =
                      { FontStyle.Bold,      FontStyle.Italic,
                        FontStyle.Underline, FontStyle.Strikeout };
  
          Label label    = new Label();
          label.Parent   = this;
          label.Text     = "Sample Text";
  
          for (int i = 0; i < 4; i++)
          {
               FontStyleCheckBox chkbox = new FontStyleCheckBox();
               chkbox.Parent = this;
               chkbox.Text = afs[i].ToString();
               chkbox.fontstyle = afs[i];
               chkbox.Location = new Point(2
                         * cxText,     (4 + 3 * i) * cyText / 2);
               chkbox.Size = new Size(12 * cxText, cyText);
               chkbox.CheckedChanged
               += new EventHandler(CheckBoxOnCheckedChanged);
          }
     }
     void CheckBoxOnCheckedChanged(object obj, EventArgs ea)
     {
          FontStyle fs = 0;
          Label     label = null;
  
          for (int i = 0; i < Controls.Count; i++)
          {
               Control ctrl = Controls[i];
  
               if (ctrl.GetType() == typeof(Label))
                    label = (Label) ctrl;
               else if (ctrl.GetType() == typeof(FontStyleCheckBox))
                    if (((FontStyleCheckBox) ctrl).Checked)
                         fs |= ((FontStyleCheckBox) ctrl).fontstyle;
          }
          label.Font = new Font(label.Font, fs);
     }
}
class FontStyleCheckBox: CheckBox
{
     public FontStyle fontstyle;
}

No comments :

Post a Comment