Csharp/C Sharp/GUI Windows Form/Control

Материал из .Net Framework эксперт
Версия от 14:33, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Add a Control Programmatically

<source lang="csharp"> using System; using System.Windows.Forms; public class DynamicCheckBox : System.Windows.Forms.Form {

   public DynamicCheckBox(){
   
       string[] foods = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"};
       int topPosition = 10;
       foreach (string food in foods)
       {
           // Create a new check box.
           CheckBox checkBox = new CheckBox();
           checkBox.Left = 10;
           checkBox.Top = topPosition;
           topPosition += 30;
           checkBox.Text = food;
           // Add the check box to the form.
           this.Controls.Add(checkBox);
       }
   }
   public static void Main(){
      Application.Run(new DynamicCheckBox());
   }

}

      </source>


Change Image alignment inside a Control

<source lang="csharp">

   using System;
 using System.Drawing;
 using System.Collections;
 using System.ruponentModel;
 using System.Windows.Forms;
 using System.Data;
 public class ButtonForm : System.Windows.Forms.Form
 {
   private System.Windows.Forms.Button btnImage;
   private System.Windows.Forms.Button btnStandard;
   // Hold the current text alignment
   ContentAlignment currAlignment = ContentAlignment.MiddleCenter;
   int currEnumPos = 0;
   
   public ButtonForm()
   {
     InitializeComponent();
     // Set btnStandard as default accept.
     this.AcceptButton = btnStandard;
     CenterToScreen();
   }
   private void InitializeComponent()
   {
     this.btnStandard = new System.Windows.Forms.Button();
     this.btnImage = new System.Windows.Forms.Button();
     this.SuspendLayout();
     // 
     // btnStandard
     // 
     this.btnStandard.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F);
     this.btnStandard.ForeColor = System.Drawing.SystemColors.ControlText;
     this.btnStandard.Location = new System.Drawing.Point(16, 80);
     this.btnStandard.Name = "btnStandard";
     this.btnStandard.Size = new System.Drawing.Size(312, 88);
     this.btnStandard.TabIndex = 2;
     this.btnStandard.Text = "Click to change the Image alignment";
     this.btnStandard.Click += new System.EventHandler(this.btnStandard_Click);
     // 
     // btnImage
     // 
     this.btnImage.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Bold);
     this.btnImage.Image = new Bitmap("winter.jpg");
     this.btnImage.Location = new System.Drawing.Point(16, 192);
     this.btnImage.Name = "btnImage";
     this.btnImage.Size = new System.Drawing.Size(312, 72);
     this.btnImage.TabIndex = 3;
     this.btnImage.Text = "Image Button";
     this.btnImage.TextAlign = System.Drawing.ContentAlignment.TopCenter;
     // 
     // ButtonForm
     // 
     this.AcceptButton = this.btnStandard;
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(340, 269);
     this.Controls.AddRange(new System.Windows.Forms.Control[] {this.btnImage,
                                    this.btnStandard,
                                   });
     this.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
     this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
     this.Name = "ButtonForm";
     this.Text = "Buttons";
     this.ResumeLayout(false);
   }
   
   protected void btnStandard_Click (object sender, System.EventArgs e)
   {      
     Array values = Enum.GetValues(currAlignment.GetType());
   
     currEnumPos++;
     if(currEnumPos >= values.Length)
       currEnumPos = 0;
     
     currAlignment = (ContentAlignment)ContentAlignment.Parse(currAlignment.GetType(), 
             values.GetValue(currEnumPos).ToString());
     btnImage.ImageAlign = currAlignment;
   }
   public static void Main(string[] args) 
   {
     Application.Run(new ButtonForm());
   }
 }
          
      </source>


Control Enabled

<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms; class MainWindow : Form {

   private TextBox firstNameBox = new TextBox();
   private Button btnShowControls = new Button();
   public MainWindow() {
       this.Text = "Simple Controls";
       this.Width = 300;
       this.Height = 200;
       CenterToScreen();
       firstNameBox.Text = "Hello";
       firstNameBox.Size = new Size(150, 50);
       firstNameBox.Location = new Point(10, 10);
       this.Controls.Add(firstNameBox);
       btnShowControls.Text = "Click Me";
       btnShowControls.Size = new Size(90, 30);
       btnShowControls.Location = new Point(10, 70);
       btnShowControls.BackColor = Color.DodgerBlue;
       btnShowControls.Click += new EventHandler(btnShowControls_Clicked);
       this.Controls.Add(btnShowControls);
   }
   private void btnShowControls_Clicked(object sender, EventArgs e) {
       string ctrlInfo = "";
       foreach (Control c in this.Controls) {
           ctrlInfo += string.Format("Control: {0}\n",c.ToString());
       }
       MessageBox.Show(ctrlInfo, "Controls on Form");
       DisableAllButtons();
   }
   private void DisableAllButtons() {
       foreach (Control c in this.Controls) {
           if (c is Button)
               ((Button)c).Enabled = false;
       }
   }
   public static void Main(string[] args) {
       Application.Run(new MainWindow());
   }

}

</source>


Control renderer Demo: CheckBox

<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Windows.Forms.VisualStyles; public class Form1 : Form {

     public Form1() {
           InitializeComponent();
           
     }
   private void ControlRenderer_Paint(object sender, PaintEventArgs e)
   {
     
       CheckBoxRenderer.DrawCheckBox(e.Graphics, new Point(10,10),
         new Rectangle(10,10,110,15), "Style checkbox", Font,false, CheckBoxState.CheckedNormal);
     
   }
   private void InitializeComponent()
   {
     this.SuspendLayout();
     // 
     // ControlRenderer
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
     this.ClientSize = new System.Drawing.Size(292, 266);
     this.Name = "ControlRenderer";
     this.Text = "ControlRenderer";
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.ControlRenderer_Paint);
     this.ResumeLayout(false);
   }
     [STAThread]
     static void Main()
     {
       Application.EnableVisualStyles();
       Application.Run(new Form1());
     }

}


      </source>


Control style: resize and redraw

<source lang="csharp">

 using System;
 using System.Drawing;
 using System.Collections;
 using System.ruponentModel;
 using System.Windows.Forms;
 using System.Data;
 public class Form1 : System.Windows.Forms.Form
 {
   private System.Windows.Forms.Button btnGetStyles;
   private System.ruponentModel.Container components;
   public Form1()
   {
     InitializeComponent();
     SetStyle(ControlStyles.ResizeRedraw, true);
   }
   protected override void Dispose( bool disposing )
   {
     if( disposing )
     {
       if (components != null) 
       {
         components.Dispose();
       }
     }
     base.Dispose( disposing );
   }
   private void InitializeComponent()
   {
     this.btnGetStyles = new System.Windows.Forms.Button();
     this.btnGetStyles.Location = new System.Drawing.Point(24, 64);
     this.btnGetStyles.Size = new System.Drawing.Size(160, 23);
     this.btnGetStyles.TabIndex = 0;
     this.btnGetStyles.Text = "Get Form Styles";
     this.btnGetStyles.Click += new System.EventHandler(this.btnGetStyles_Click);
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(211, 104);
     this.Controls.AddRange(new System.Windows.Forms.Control[] {this.btnGetStyles});
     this.Text = "A Form with Style!";
   }
   [STAThread]
   static void Main() 
   {
     Application.Run(new Form1());
   }
   private void btnGetStyles_Click(object sender, System.EventArgs e)
   {
     MessageBox.Show(GetStyle(ControlStyles.ResizeRedraw).ToString(), 
       "Do you have ResizeRedraw?");
   }
 }


      </source>


Get all controls on a form window

<source lang="csharp">

   using System;  
 using System.Drawing;
 using System.Windows.Forms;
   class MyForm : Form
 {
   private TextBox firstNameBox = new TextBox(); 
   private Button btnShowControls = new Button();
   
   MyForm()
   {
     this.Text = "Controls in the raw";
     // Add a new text box.
     firstNameBox.Text = "Chucky";
     firstNameBox.Size = new Size(150, 50);
     firstNameBox.Location = new Point(10, 10);
     this.Controls.Add(firstNameBox);
     // Add a new button.
     btnShowControls.Text = "Examine Controls collection";
     btnShowControls.Size = new Size(90, 90);
     btnShowControls.Location = new Point(10, 70);
     btnShowControls.Click += 
       new EventHandler(btnShowControls_Clicked);
     this.Controls.Add(btnShowControls);
     CenterToScreen();
   }
   protected void btnShowControls_Clicked(object sender, EventArgs e)
   {
     Control.ControlCollection coll = this.Controls;
     foreach(Control c in coll) {
       if(c != null)
         Console.WriteLine(c.Text, "Index numb: " + coll.GetChildIndex(c, false));   
     }
   }
       public static int Main(string[] args)
       {
     Application.Run(new MyForm());
     return 0;
       }
   }


      </source>


Use Control.GetType to check the control type

<source lang="csharp">

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;

}

</source>