Csharp/C Sharp/GUI Windows Form/TextBox — различия между версиями

Материал из .Net Framework эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Версия 15:31, 26 мая 2010

Add ScrollBars to TextBox

 
using System;
using System.Drawing;
using System.Windows.Forms;
   
class NotepadCloneNoMenu: Form
{
     protected TextBox txtbox;
   
     public static void Main()
     {
          Application.Run(new NotepadCloneNoMenu());
     }
     public NotepadCloneNoMenu()
     {
          Text = "Notepad Clone No Menu";
   
          txtbox             = new TextBox();
          txtbox.Parent      = this;
          txtbox.Dock        = DockStyle.Fill;
          txtbox.BorderStyle = BorderStyle.None;
          txtbox.Multiline   = true;
          txtbox.ScrollBars  = ScrollBars.Both;
          txtbox.AcceptsTab  = true;
     }
}


All cap text textbox

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ruponentModel;
    using System.Windows.Forms;
    using System.Data;
  public class TextForm : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Button btnPasswordDecoderRing;
    private System.Windows.Forms.Label label3;
    private System.Windows.Forms.TextBox passwordBox;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.TextBox capsOnlyBox;
    private System.Windows.Forms.Button btnGetMultiLineText;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.TextBox multiLineBox;
        public TextForm()
        {
            InitializeComponent();
        }
    private void InitializeComponent()
    {
      this.capsOnlyBox = new System.Windows.Forms.TextBox();
      this.multiLineBox = new System.Windows.Forms.TextBox();
      this.label1 = new System.Windows.Forms.Label();
      this.label2 = new System.Windows.Forms.Label();
      this.passwordBox = new System.Windows.Forms.TextBox();
      this.btnGetMultiLineText = new System.Windows.Forms.Button();
      this.btnPasswordDecoderRing = new System.Windows.Forms.Button();
      this.label3 = new System.Windows.Forms.Label();
      this.capsOnlyBox.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
      this.capsOnlyBox.Location = new System.Drawing.Point(14, 176);
      this.capsOnlyBox.Size = new System.Drawing.Size(120, 20);
      this.capsOnlyBox.TabIndex = 3;
      this.multiLineBox.AcceptsReturn = true;
      this.multiLineBox.AcceptsTab = true;
      this.multiLineBox.Location = new System.Drawing.Point(152, 8);
      this.multiLineBox.Multiline = true;
      this.multiLineBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
      this.multiLineBox.Size = new System.Drawing.Size(240, 104);
      this.multiLineBox.TabIndex = 0;
      this.multiLineBox.Text = "Get text from multiline textbox";
      this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
      this.label1.Location = new System.Drawing.Point(8, 8);
      this.label1.Size = new System.Drawing.Size(136, 56);
      this.label1.TabIndex = 1;
      this.label1.Text = "this is a multiline text box";
      this.label2.Font = new System.Drawing.Font("Comic Sans MS", 12F);
      this.label2.Location = new System.Drawing.Point(14, 144);
      this.label2.Size = new System.Drawing.Size(106, 24);
      this.label2.TabIndex = 4;
      this.label2.Text = "Caps only!!";
      this.passwordBox.Location = new System.Drawing.Point(160, 176);
      this.passwordBox.PasswordChar = "$";
      this.passwordBox.Size = new System.Drawing.Size(232, 20);
      this.passwordBox.TabIndex = 5;
      this.passwordBox.Text = "password";
      this.btnGetMultiLineText.Location = new System.Drawing.Point(13, 72);
      this.btnGetMultiLineText.Size = new System.Drawing.Size(120, 32);
      this.btnGetMultiLineText.TabIndex = 2;
      this.btnGetMultiLineText.Text = "Get Text";
      this.btnGetMultiLineText.Click += new System.EventHandler(this.btnGetMultiLineText_Click);
      this.btnPasswordDecoderRing.Location = new System.Drawing.Point(280, 144);
      this.btnPasswordDecoderRing.Size = new System.Drawing.Size(112, 24);
      this.btnPasswordDecoderRing.TabIndex = 7;
      this.btnPasswordDecoderRing.Text = "Decode Password";
      this.btnPasswordDecoderRing.Click += new System.EventHandler(this.btnPasswordDecoderRing_Click);
      this.label3.Font = new System.Drawing.Font("Comic Sans MS", 12F);
      this.label3.Location = new System.Drawing.Point(152, 144);
      this.label3.Size = new System.Drawing.Size(120, 24);
      this.label3.TabIndex = 6;
      this.label3.Text = "Password Box";
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(408, 221);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {this.btnPasswordDecoderRing,
                                      this.label3,
                                      this.passwordBox,
                                      this.label2,
                                      this.capsOnlyBox,
                                      this.btnGetMultiLineText,
                                      this.label1,
                                      this.multiLineBox});
      this.Text = "TextBox Types";
    }
    protected void btnPasswordDecoderRing_Click (object sender, System.EventArgs e)
    {
      MessageBox.Show(passwordBox.Text, "Your password is:");
    }
    protected void btnGetMultiLineText_Click (object sender, System.EventArgs e)
    {
      MessageBox.Show(multiLineBox.Text, "Here is your text");
    }
        public static void Main(string[] args) 
        {
            Application.Run(new TextForm());
        }
    }


A simple text editor

using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
public class MenuDialog : Form {
  TextBox text = new TextBox();
  public MenuDialog() {
    Size = new Size(500,200);
    text.Size = new Size(490,190);
    text.Multiline = true;
    text.ScrollBars = ScrollBars.Both;
    text.WordWrap = false;
    text.Location = new Point(5,5);
    MenuItem fileMenu = new MenuItem("File");
    MenuItem open = new MenuItem("Open");
    open.Shortcut = Shortcut.CtrlO;
    MenuItem save = new MenuItem("Save");
    save.Shortcut = Shortcut.CtrlS;
    fileMenu.MenuItems.Add(open);
    fileMenu.MenuItems.Add(save);
    MenuItem formatMenu = new MenuItem("Format");
    MenuItem font = new MenuItem("Font");
    font.Shortcut = Shortcut.CtrlF;
    formatMenu.MenuItems.Add(font);
     
    MainMenu bar = new MainMenu();
    Menu = bar;
    bar.MenuItems.Add(fileMenu);
    bar.MenuItems.Add(formatMenu);
    Controls.Add(text);
    open.Click += new EventHandler(Open_Click);
    save.Click += new EventHandler(Save_Click);
    font.Click += new EventHandler(Font_Click); 
  }
  
  protected void Open_Click(Object sender, EventArgs e) {
    OpenFileDialog o = new OpenFileDialog();
    if(o.ShowDialog() == DialogResult.OK) {
      Stream file = o.OpenFile();
      StreamReader reader = new StreamReader(file);
      char[] data = new char[file.Length];
      reader.ReadBlock(data,0,(int)file.Length);
      text.Text = new String(data);  
      reader.Close();
    }
  }
  protected void Save_Click(Object sender, EventArgs e) {
    SaveFileDialog s = new SaveFileDialog();
    if(s.ShowDialog() == DialogResult.OK) {
      StreamWriter writer = new StreamWriter(s.OpenFile());
      writer.Write(text.Text);
      writer.Close();
    }
  }
  protected void Font_Click(Object sender, EventArgs e) {
    FontDialog f = new FontDialog();
    if(f.ShowDialog() == DialogResult.OK) 
      text.Font = f.Font;
  }
  public static void Main() {
    Application.Run(new MenuDialog());
  }
}


Convert TextBox input to double value

using System;
using System.Drawing;
using System.Windows.Forms;
public class EnterPrice : Form {
  private Button enter = new Button();
  private Label answer = new Label();
  private TextBox text = new TextBox( );
  public EnterPrice( ) {
    enter.Text = "Enter Price";
    text.Text = "";
    answer.Text = "";
    Size = new Size(300,200);
    answer.Size = new Size(200,50);
    enter.Location = new Point(30 + enter.Width, 30);
    text.Location = new Point (40 + enter.Width + enter.Width, 30);
    answer.Location = new Point(20, 60);
    AcceptButton = enter;
    Controls.Add(text);
    Controls.Add(answer);
    Controls.Add(enter);
    enter.Click += new EventHandler(Enter_Click);
  }
  protected void Enter_Click(Object sender, EventArgs e) {
    try{
    Console.WriteLine(Double.Parse(text.Text));
    }catch(Exception){
    }
    text.Text = "";
    text.Focus();
  }
  static void Main() {
    Application.Run(new EnterPrice());
  }
}


Data Checker

/*
Professional Windows GUI Programming Using C#
by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury, 
   Zach Greenvoss, Shripad Kulkarni, Neil Whitlow
Publisher: Peer Information
ISBN: 1861007663
*/
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Threading;

namespace DataChecker
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class DataChecker : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TextBox txtCoffeePrice;
        private System.Windows.Forms.TextBox txtTeaPrice;
        private System.Windows.Forms.TextBox txtGoldPrice;
        private System.Windows.Forms.Label lblCoffeePrice;
        private System.Windows.Forms.Label lblTeaPrice;
        private System.Windows.Forms.Label lblGoldPrice;
        private int lastCoffeePrice = 0;
        private int lastTeaPrice = 0;
        private int lastGoldPrice = 0;
        private int allUpdates = 0;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ruponentModel.Container components = null;
        private System.Threading.Timer t1 = null;
        private System.Threading.Timer t2 = null;
        private System.Threading.Timer t3 = null;
        public DataChecker()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            t1 = new System.Threading.Timer(new TimerCallback(Timer_Callback), "C", 0, 500);
            t2 = new System.Threading.Timer(new TimerCallback(Timer_Callback), "T", 1, 500);
            t3 = new System.Threading.Timer(new TimerCallback(Timer_Callback), "G", 2, 500);        
            /*WaitOrTimerCallback wotc = new WaitOrTimerCallback(GetData);
            AutoResetEvent are = new AutoResetEvent(false);
            ThreadPool.RegisterWaitForSingleObject(are, new WaitOrTimerCallback(GetData), "C", 500, false);*/
        }
        protected void Timer_Callback(object state)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(GetData), state);
        }

        int retVal;
        private void GetData(object type)
        {
            char priceType = (char)type;
            string sql = null;
            sql = "SELECT Price FROM tblPrices WHERE Type=""+priceType.ToString()+""";
            SqlConnection cn = new SqlConnection("Server=localhost; Database=Prices; Integrated Security=SSPI");
            cn.Open();
            SqlCommand cmd = new SqlCommand(sql, cn);
            
            lock(this)
            {
                retVal = (int)cmd.ExecuteScalar(); 
                switch(priceType) 
                {
                    case "C":
                        lastCoffeePrice = Convert.ToInt32(txtCoffeePrice.Text);
                        txtCoffeePrice.Text = retVal.ToString();
                        break;
                    case "T":
                        lastTeaPrice = Convert.ToInt32(txtTeaPrice.Text);
                        txtTeaPrice.Text = retVal.ToString();
                        break;
                    case "G":
                        lastGoldPrice = Convert.ToInt32(txtGoldPrice.Text);
                        txtGoldPrice.Text = retVal.ToString();
                        break;
                }
            }
            
            allUpdates++;
            cn.Close();
        }
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.txtCoffeePrice = new System.Windows.Forms.TextBox();
            this.txtTeaPrice = new System.Windows.Forms.TextBox();
            this.txtGoldPrice = new System.Windows.Forms.TextBox();
            this.lblCoffeePrice = new System.Windows.Forms.Label();
            this.lblTeaPrice = new System.Windows.Forms.Label();
            this.lblGoldPrice = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // txtCoffeePrice
            // 
            this.txtCoffeePrice.Location = new System.Drawing.Point(72, 24);
            this.txtCoffeePrice.Name = "txtCoffeePrice";
            this.txtCoffeePrice.TabIndex = 0;
            this.txtCoffeePrice.Text = "0";
            // 
            // txtTeaPrice
            // 
            this.txtTeaPrice.Location = new System.Drawing.Point(192, 24);
            this.txtTeaPrice.Name = "txtTeaPrice";
            this.txtTeaPrice.TabIndex = 1;
            this.txtTeaPrice.Text = "0";
            // 
            // txtGoldPrice
            // 
            this.txtGoldPrice.Location = new System.Drawing.Point(312, 24);
            this.txtGoldPrice.Name = "txtGoldPrice";
            this.txtGoldPrice.TabIndex = 2;
            this.txtGoldPrice.Text = "0";
            // 
            // lblCoffeePrice
            // 
            this.lblCoffeePrice.Location = new System.Drawing.Point(72, 0);
            this.lblCoffeePrice.Name = "lblCoffeePrice";
            this.lblCoffeePrice.TabIndex = 3;
            this.lblCoffeePrice.Text = "Coffee Price";
            // 
            // lblTeaPrice
            // 
            this.lblTeaPrice.Location = new System.Drawing.Point(192, 0);
            this.lblTeaPrice.Name = "lblTeaPrice";
            this.lblTeaPrice.TabIndex = 4;
            this.lblTeaPrice.Text = "Tea Price";
            // 
            // lblGoldPrice
            // 
            this.lblGoldPrice.Location = new System.Drawing.Point(320, 0);
            this.lblGoldPrice.Name = "lblGoldPrice";
            this.lblGoldPrice.TabIndex = 5;
            this.lblGoldPrice.Text = "Gold Price";
            // 
            // DataChecker
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(424, 54);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.lblGoldPrice,
                                                                          this.lblTeaPrice,
                                                                          this.lblCoffeePrice,
                                                                          this.txtGoldPrice,
                                                                          this.txtTeaPrice,
                                                                          this.txtCoffeePrice});
            this.MaximizeBox = false;
            this.Name = "DataChecker";
            this.Text = "Data Checker";
            this.ResumeLayout(false);
        }
        #endregion
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new DataChecker());
        }
        
    }
}


Get value from TextBox

 
using System;
using System.Drawing;
using System.Windows.Forms;
public class InterestCalculator : Form {
    Button buttonCalculate  = new Button();
    TextBox textBoxPrincipal = new TextBox();
    TextBox textBoxRate = new TextBox();
    TextBox textBoxInterest = new TextBox();
    Label labelPrincipal = new Label();
    Label labelRate = new Label();
    Label labelInterest = new Label();
    public InterestCalculator() {
        buttonCalculate.Location = new Point(50, 100);
        buttonCalculate.Text = "Calculate";
        buttonCalculate.Click += new System.EventHandler(this.buttonCalculate_Click);
        this.Controls.Add(buttonCalculate);
        textBoxPrincipal.Location = new Point(10, 20);
        textBoxPrincipal.Size = new Size(150, 10);
        textBoxPrincipal.Text = "100000.00";
        this.Controls.Add(textBoxPrincipal);
        textBoxRate.Location = new Point(10, 60);
        textBoxRate.Size = new Size(150, 10);
        textBoxRate.Text = "0.15";
        this.Controls.Add(textBoxRate);
        textBoxInterest.Location = new Point(10, 150);
        textBoxInterest.Size = new Size(150, 10);
        textBoxInterest.Text = "15000.00";
        this.Controls.Add(textBoxInterest);
        labelPrincipal.Location = new Point(10, 5);
        labelPrincipal.Size = new Size(144, 15);
        labelPrincipal.Text = "Principal";
        this.Controls.Add(labelPrincipal);
        labelRate.Location = new Point(10, 45);
        labelRate.Size = new Size(144, 15);
        labelRate.Text = "Rate";
        this.Controls.Add(labelRate);
        labelInterest.Location = new Point(10, 135);
        labelInterest.Size = new Size(144, 15);
        labelInterest.Text = "Interest";
        this.Controls.Add(labelInterest);
    }
    private void buttonCalculate_Click(object sender, System.EventArgs e) {
        double prin = Convert.ToDouble(textBoxPrincipal.Text);
        double rate = Convert.ToDouble(textBoxRate.Text);
        double amt = prin * rate;
        textBoxInterest.Text = amt.ToString("f2");
    }
    public static void Main(string[] args) {
        Application.Run(new InterestCalculator());
    }
}


Keyboard event and TextBox

 
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Text;
public class Form1 : System.Windows.Forms.Form {
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.TextBox textBox2;
    private System.Windows.Forms.GroupBox groupBox1;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.GroupBox groupBox2;
    private System.Windows.Forms.Label label2;
    public Form1() {
        this.textBox1 = new System.Windows.Forms.TextBox();
        this.textBox2 = new System.Windows.Forms.TextBox();
        this.groupBox1 = new System.Windows.Forms.GroupBox();
        this.label1 = new System.Windows.Forms.Label();
        this.groupBox2 = new System.Windows.Forms.GroupBox();
        this.label2 = new System.Windows.Forms.Label();
        this.groupBox1.SuspendLayout();
        this.groupBox2.SuspendLayout();
        this.SuspendLayout();
        // 
        // textBox1
        // 
        this.textBox1.Location = new System.Drawing.Point(16, 24);
        this.textBox1.Name = "textBox1";
        this.textBox1.Size = new System.Drawing.Size(168, 20);
        this.textBox1.TabIndex = 5;
        this.textBox1.Text = "";
        this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);
        // 
        // textBox2
        // 
        this.textBox2.Location = new System.Drawing.Point(16, 24);
        this.textBox2.Name = "textBox2";
        this.textBox2.Size = new System.Drawing.Size(168, 20);
        this.textBox2.TabIndex = 6;
        this.textBox2.Text = "";
        this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown);
        // 
        // groupBox1
        // 
        this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                this.label1,
                                                                                this.textBox1});
        this.groupBox1.Location = new System.Drawing.Point(8, 8);
        this.groupBox1.Name = "groupBox1";
        this.groupBox1.TabIndex = 7;
        this.groupBox1.TabStop = false;
        this.groupBox1.Text = "Key Monitor";
        // 
        // label1
        // 
        this.label1.Location = new System.Drawing.Point(16, 64);
        this.label1.Name = "label1";
        this.label1.Size = new System.Drawing.Size(168, 20);
        this.label1.TabIndex = 6;
        // 
        // groupBox2
        // 
        this.groupBox2.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                this.textBox2,
                                                                                this.label2});
        this.groupBox2.Location = new System.Drawing.Point(8, 120);
        this.groupBox2.Name = "groupBox2";
        this.groupBox2.TabIndex = 8;
        this.groupBox2.TabStop = false;
        this.groupBox2.Text = "Keys Enumeration";
        // 
        // label2
        // 
        this.label2.Location = new System.Drawing.Point(16, 64);
        this.label2.Name = "label2";
        this.label2.Size = new System.Drawing.Size(168, 20);
        this.label2.TabIndex = 9;
        // 
        // Form1
        // 
        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
        this.ClientSize = new System.Drawing.Size(216, 229);
        this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                      this.groupBox2,
                                                                      this.groupBox1});
        this.groupBox1.ResumeLayout(false);
        this.groupBox2.ResumeLayout(false);
        this.ResumeLayout(false);
    }
    [STAThread]
    static void Main() {
        Application.Run(new Form1());
    }
    private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
        label1.Text = Convert.ToString(e.KeyValue);
    }
    private void textBox2_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
        if (e.Shift) Console.WriteLine("Shift, ");
        if (e.Alt) Console.WriteLine("Alt, ");
        if (e.Control) Console.WriteLine("Ctrl, ");
        if (e.KeyCode == Keys.W || e.KeyCode == Keys.R ) {
            Console.WriteLine("W R ");
        } else if (e.KeyCode == Keys.Escape && e.Modifiers == (Keys.Shift | Keys.Alt)) {
            Console.WriteLine("Escape");
        } else if (e.KeyCode == Keys.C && e.Modifiers == (Keys.Alt | Keys.Control)) {
            Console.WriteLine("s");
            textBox2.SelectedText = "";
            textBox2.SelectionLength = 0;
        } else {
            Console.WriteLine(Convert.ToString(e.KeyData));
        }
    }
}


Label, TextBox and Button

/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald
Publisher: Apress
ISBN: 1590590457
*/
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
namespace ControlMedley
{
    /// <summary>
    /// Summary description for ControlMedley.
    /// </summary>
    public class ControlMedley : System.Windows.Forms.Form
    {
        internal System.Windows.Forms.Label Label1;
        internal System.Windows.Forms.TextBox TextBox1;
        internal System.Windows.Forms.Button Button1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ruponentModel.Container components = null;
        public ControlMedley()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.Label1 = new System.Windows.Forms.Label();
            this.TextBox1 = new System.Windows.Forms.TextBox();
            this.Button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // Label1
            // 
            this.Label1.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.Label1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.Label1.Location = new System.Drawing.Point(20, 92);
            this.Label1.Name = "Label1";
            this.Label1.Size = new System.Drawing.Size(112, 24);
            this.Label1.TabIndex = 5;
            this.Label1.Text = "Label1";
            this.Label1.Click += new System.EventHandler(this.ctrlClick);
            // 
            // TextBox1
            // 
            this.TextBox1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.TextBox1.Location = new System.Drawing.Point(20, 56);
            this.TextBox1.Name = "TextBox1";
            this.TextBox1.Size = new System.Drawing.Size(156, 21);
            this.TextBox1.TabIndex = 4;
            this.TextBox1.Text = "TextBox1";
            this.TextBox1.Click += new System.EventHandler(this.ctrlClick);
            // 
            // Button1
            // 
            this.Button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.Button1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.Button1.Location = new System.Drawing.Point(20, 16);
            this.Button1.Name = "Button1";
            this.Button1.Size = new System.Drawing.Size(96, 28);
            this.Button1.TabIndex = 3;
            this.Button1.Text = "Button1";
            this.Button1.Click += new System.EventHandler(this.ctrlClick);
            // 
            // ControlMedley
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
            this.ClientSize = new System.Drawing.Size(316, 214);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.Label1,
                                                                          this.TextBox1,
                                                                          this.Button1});
            this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.Name = "ControlMedley";
            this.Text = "Control Medley";
            this.ResumeLayout(false);
        }
        #endregion
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new ControlMedley());
        }
        private void ctrlClick(System.Object sender, EventArgs e)
        {
            Control ctrl = (Control)sender;
            MessageBox.Show("You clicked: " + ctrl.Name);
        }
    }
}


new TextBox(), Localtion, Name, TabIndex, Text

 
using System;
using System.Windows.Forms;
class MainForm : Form
{
    private Label label1;
    private TextBox textBox1;
    private Button button1;
    public MainForm()
    {
         this.label1 = new Label();
         this.textBox1 = new TextBox();
         this.button1 = new Button();
         this.SuspendLayout();
         this.label1.Location = new System.Drawing.Point(16, 36);
         this.label1.Name = "label1";
         this.label1.Size = new System.Drawing.Size(128, 16);
         this.label1.TabIndex = 0;
         this.label1.Text = "Please enter your name:"; 
         this.textBox1.Location = new System.Drawing.Point(152, 32);
         this.textBox1.Name = "textBox1";
         this.textBox1.TabIndex = 1;
         this.textBox1.Text = "";
         this.button1.Location = new System.Drawing.Point(109, 80);
         this.button1.Name = "button1";
         this.button1.TabIndex = 2;
         this.button1.Text = "Enter";
         this.button1.Click += new System.EventHandler(this.button1_Click);
         this.ClientSize = new System.Drawing.Size(292, 126);
         this.Controls.Add(this.button1);
         this.Controls.Add(this.textBox1);
         this.Controls.Add(this.label1);
         this.ResumeLayout(false);
     }
     private void button1_Click(object sender, System.EventArgs e)
     {
        System.Console.WriteLine("User entered: " + textBox1.Text);
        MessageBox.Show("Welcome, " + textBox1.Text, "Visual C#");
     }
     [STAThread]
     public static void Main()
     {
        Application.EnableVisualStyles();
        Application.Run(new MainForm());
     }
}


Simple Editor based on TextBox

 
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
public class SimpleEditorForm : Form {
    private string filename = "Untitled";
    public SimpleEditorForm(string filename) {
        InitializeComponent();
        if (filename != null) {
            this.filename = filename;
            OpenFile();
        }
    }
    protected void OpenFile() {
        try {
            textBoxEdit.Clear();
            textBoxEdit.Text = File.ReadAllText(filename);
        } catch (IOException ex) {
            MessageBox.Show(ex.Message, "Simple Editor",
                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
    }
    private void OnFileNew(object sender, EventArgs e) {
        filename = "Untitled";
        textBoxEdit.Clear();
    }
    private void OnFileOpen(object sender, EventArgs e) {
        if (dlgOpenFile.ShowDialog() == DialogResult.OK) {
            filename = dlgOpenFile.FileName;
            OpenFile();
        }
    }
    private void OnFileSave(object sender, EventArgs e) {
    }
    private void OnFileSaveAs(object sender, EventArgs e) {
    }
    private void InitializeComponent() {
        this.textBoxEdit = new System.Windows.Forms.TextBox();
        this.mainMenu = new System.Windows.Forms.MenuStrip();
        this.miFile = new System.Windows.Forms.ToolStripMenuItem();
        this.miFileNew = new System.Windows.Forms.ToolStripMenuItem();
        this.miFileOpen = new System.Windows.Forms.ToolStripMenuItem();
        this.miFileSave = new System.Windows.Forms.ToolStripMenuItem();
        this.miFileSaveAs = new System.Windows.Forms.ToolStripMenuItem();
        this.dlgOpenFile = new System.Windows.Forms.OpenFileDialog();
        this.mainMenu.SuspendLayout();
        this.SuspendLayout();
        // 
        // textBoxEdit
        // 
        this.textBoxEdit.AcceptsReturn = true;
        this.textBoxEdit.AcceptsTab = true;
        this.textBoxEdit.Dock = System.Windows.Forms.DockStyle.Fill;
        this.textBoxEdit.Location = new System.Drawing.Point(0, 24);
        this.textBoxEdit.Multiline = true;
        this.textBoxEdit.Name = "textBoxEdit";
        this.textBoxEdit.ScrollBars = System.Windows.Forms.ScrollBars.Both;
        this.textBoxEdit.Size = new System.Drawing.Size(562, 219);
        this.textBoxEdit.TabIndex = 0;
        // 
        // mainMenu
        // 
        this.mainMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.miFile});
        this.mainMenu.Location = new System.Drawing.Point(0, 0);
        this.mainMenu.Name = "mainMenu";
        this.mainMenu.Size = new System.Drawing.Size(562, 24);
        this.mainMenu.TabIndex = 1;
        this.mainMenu.Text = "menuStrip1";
        // 
        // miFile
        // 
        this.miFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.miFileNew,
            this.miFileOpen,
            this.miFileSave,
            this.miFileSaveAs});
        this.miFile.Name = "miFile";
        this.miFile.Text = "&File";
        // 
        // miFileNew
        // 
        this.miFileNew.Name = "miFileNew";
        this.miFileNew.Text = "&New";
        this.miFileNew.Click += new System.EventHandler(this.OnFileNew);
        // 
        // miFileOpen
        // 
        this.miFileOpen.Name = "miFileOpen";
        this.miFileOpen.Text = "&Open";
        this.miFileOpen.Click += new System.EventHandler(this.OnFileOpen);
        // 
        // miFileSave
        // 
        this.miFileSave.Name = "miFileSave";
        this.miFileSave.Text = "&Save";
        this.miFileSave.Click += new System.EventHandler(this.OnFileSave);
        // 
        // miFileSaveAs
        // 
        this.miFileSaveAs.Name = "miFileSaveAs";
        this.miFileSaveAs.Text = "Save &As";
        this.miFileSaveAs.Click += new System.EventHandler(this.OnFileSaveAs);
        // 
        // dlgOpenFile
        // 
        this.dlgOpenFile.Filter = "Text Documents (*.txt)|*.txt|Wrox Documents (*.wroxtext)|*.wroxtext|All Files|*.*" +
            "";
        this.dlgOpenFile.FilterIndex = 2;
        // 
        // SimpleEditorForm
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(562, 243);
        this.Controls.Add(this.textBoxEdit);
        this.Controls.Add(this.mainMenu);
        this.MainMenuStrip = this.mainMenu;
        this.Name = "SimpleEditorForm";
        this.Text = "Simple Editor";
        this.mainMenu.ResumeLayout(false);
        this.ResumeLayout(false);
        this.PerformLayout();
    }

    private System.Windows.Forms.TextBox textBoxEdit;
    private System.Windows.Forms.MenuStrip mainMenu;
    private System.Windows.Forms.ToolStripMenuItem miFile;
    private System.Windows.Forms.ToolStripMenuItem miFileNew;
    private System.Windows.Forms.ToolStripMenuItem miFileOpen;
    private System.Windows.Forms.ToolStripMenuItem miFileSave;
    private System.Windows.Forms.ToolStripMenuItem miFileSaveAs;
    private System.Windows.Forms.OpenFileDialog dlgOpenFile;
    [STAThread]
    static void Main(string[] args) {
        string filename = null;
        if (args.Length != 0)
            filename = args[0];
        Application.EnableVisualStyles();
        Application.Run(new SimpleEditorForm(filename));
    }
}


TextBox and button on form

/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa
Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
namespace Form
{
  /// <summary>
  /// Summary description for ButtonTextForm.
  /// </summary>
  public class ButtonTextForm : System.Windows.Forms.Form
  {
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Button button2;
    private System.Windows.Forms.TextBox textBox1;
    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ruponentModel.Container components = null;
    public ButtonTextForm()
    {
      //
      // Required for Windows Form Designer support
      //
      InitializeComponent();
      //
      // TODO: Add any constructor code after InitializeComponent call
      //
    }

    #region Windows Form Designer generated code
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
      this.button1 = new System.Windows.Forms.Button();
      this.button2 = new System.Windows.Forms.Button();
      this.textBox1 = new System.Windows.Forms.TextBox();
      this.SuspendLayout();
      // 
      // button1
      // 
      this.button1.Location = new System.Drawing.Point(61, 159);
      this.button1.Name = "button1";
      this.button1.Size = new System.Drawing.Size(85, 37);
      this.button1.TabIndex = 1;
      this.button1.Text = "button1";
      // 
      // button2
      // 
      this.button2.Location = new System.Drawing.Point(196, 159);
      this.button2.Name = "button2";
      this.button2.Size = new System.Drawing.Size(95, 37);
      this.button2.TabIndex = 2;
      this.button2.Text = "button2";
      // 
      // textBox1
      // 
      this.textBox1.Location = new System.Drawing.Point(41, 37);
      this.textBox1.Name = "textBox1";
      this.textBox1.Size = new System.Drawing.Size(262, 22);
      this.textBox1.TabIndex = 0;
      this.textBox1.Text = "textBox1";
      // 
      // ButtonTextForm
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
      this.ClientSize = new System.Drawing.Size(340, 280);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                      this.button1,
                                      this.button2,
                                      this.textBox1});
      this.Name = "ButtonTextForm";
      this.Text = "ButtonTextForm";
      this.Load += new System.EventHandler(this.ButtonTextForm_Load);
      this.ResumeLayout(false);
    }
    #endregion
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main() 
    {
      Application.Run(new ButtonTextForm());
    }
    private void ButtonTextForm_Load(object sender, System.EventArgs e)
    {
    }
    private void button2_Click(object sender, System.EventArgs e)
    {
      Application.Exit ();
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
      MessageBox.Show (this,
        textBox1.Text, "Text Box",
        MessageBoxButtons.OKCancel,
        MessageBoxIcon.Exclamation);
    }
  }
}


TextBox and ListBox

using System;
using System.Drawing;
using System.Windows.Forms;

public class WindowSample : Form
{
   private TextBox data;
   private ListBox results;
   public WindowSample()
   {
      Text = "Sample Window Program";
      Size = new Size(400, 380);
      Label label1 = new Label();
      label1.Parent = this;
      label1.Text = "Enter text string:";
      label1.AutoSize = true;
      label1.Location = new Point(10, 10);
      data = new TextBox();
      data.Parent = this;
      data.Size = new Size(200, 2 * Font.Height);
      data.Location = new Point(10, 35);
      results = new ListBox();
      results.Parent = this;
      results.Location = new Point(10, 65);
      results.Size = new Size(350, 20 * Font.Height);
      Button checkit = new Button();
      checkit.Parent = this;
      checkit.Text = "test";
      checkit.Location = new Point(235,32);
      checkit.Size = new Size(7 * Font.Height, 2 * Font.Height);
      checkit.Click += new EventHandler(ButtonOnClick);
   }
   void ButtonOnClick(object obj, EventArgs ea)
   {
      results.Items.Add(data.Text);
      data.Clear();
   }
   public static void Main()
   {
      Application.Run(new WindowSample());
   }
}


TextBox Demo

/*
Professional Windows GUI Programming Using C#
by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury, 
   Zach Greenvoss, Shripad Kulkarni, Neil Whitlow
Publisher: Peer Information
ISBN: 1861007663
*/
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
namespace TextBox
{
    /// <summary>
    /// Summary description for TextBox.
    /// </summary>
    public class TextBox : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.TextBox SINGLE_LINE;
        private System.Windows.Forms.TextBox PASSWORD_LINE;
        private System.Windows.Forms.TextBox MULTI_LINE;
        private System.Windows.Forms.RichTextBox RICH_EDIT;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ruponentModel.Container components = null;
        public TextBox()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.SINGLE_LINE = new System.Windows.Forms.TextBox();
            this.label1 = new System.Windows.Forms.Label();
            this.PASSWORD_LINE = new System.Windows.Forms.TextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.MULTI_LINE = new System.Windows.Forms.TextBox();
            this.RICH_EDIT = new System.Windows.Forms.RichTextBox();
            this.label4 = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // SINGLE_LINE
            // 
            this.SINGLE_LINE.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
            this.SINGLE_LINE.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(128)), ((System.Byte)(64)), ((System.Byte)(64)));
            this.SINGLE_LINE.Location = new System.Drawing.Point(32, 40);
            this.SINGLE_LINE.Name = "SINGLE_LINE";
            this.SINGLE_LINE.Size = new System.Drawing.Size(408, 20);
            this.SINGLE_LINE.TabIndex = 0;
            this.SINGLE_LINE.Text = "THIS IS A SINGLELINE EDIT CONTROL";
            // 
            // label1
            // 
            this.label1.Location = new System.Drawing.Point(32, 24);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(168, 16);
            this.label1.TabIndex = 1;
            this.label1.Text = "Single Line TextBox";
            // 
            // PASSWORD_LINE
            // 
            this.PASSWORD_LINE.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.PASSWORD_LINE.Location = new System.Drawing.Point(32, 104);
            this.PASSWORD_LINE.Name = "PASSWORD_LINE";
            this.PASSWORD_LINE.PasswordChar = "^";
            this.PASSWORD_LINE.Size = new System.Drawing.Size(104, 22);
            this.PASSWORD_LINE.TabIndex = 2;
            this.PASSWORD_LINE.Text = "";
            // 
            // label2
            // 
            this.label2.Location = new System.Drawing.Point(32, 80);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(160, 16);
            this.label2.TabIndex = 3;
            this.label2.Text = "Password TextBox";
            // 
            // label3
            // 
            this.label3.Location = new System.Drawing.Point(32, 136);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(120, 16);
            this.label3.TabIndex = 4;
            this.label3.Text = "MultiLine TextBox";
            // 
            // MULTI_LINE
            // 
            this.MULTI_LINE.AcceptsReturn = true;
            this.MULTI_LINE.AcceptsTab = true;
            this.MULTI_LINE.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic), System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.MULTI_LINE.ForeColor = System.Drawing.SystemColors.HotTrack;
            this.MULTI_LINE.Location = new System.Drawing.Point(32, 160);
            this.MULTI_LINE.MaxLength = 10000;
            this.MULTI_LINE.Multiline = true;
            this.MULTI_LINE.Name = "MULTI_LINE";
            this.MULTI_LINE.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
            this.MULTI_LINE.Size = new System.Drawing.Size(408, 104);
            this.MULTI_LINE.TabIndex = 5;
            this.MULTI_LINE.Text = "";
            // 
            // RICH_EDIT
            // 
            this.RICH_EDIT.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.RICH_EDIT.ForeColor = System.Drawing.Color.Red;
            this.RICH_EDIT.Location = new System.Drawing.Point(32, 296);
            this.RICH_EDIT.Name = "RICH_EDIT";
            this.RICH_EDIT.ShowSelectionMargin = true;
            this.RICH_EDIT.Size = new System.Drawing.Size(408, 120);
            this.RICH_EDIT.TabIndex = 6;
            this.RICH_EDIT.Text = "richTextBox1";
            this.RICH_EDIT.ZoomFactor = 4.999695F;
            // 
            // label4
            // 
            this.label4.Location = new System.Drawing.Point(32, 272);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(152, 16);
            this.label4.TabIndex = 7;
            this.label4.Text = "RichEdit Text Box";
            // 
            // TextBox
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(464, 453);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.label4,
                                                                          this.RICH_EDIT,
                                                                          this.MULTI_LINE,
                                                                          this.label3,
                                                                          this.label2,
                                                                          this.PASSWORD_LINE,
                                                                          this.label1,
                                                                          this.SINGLE_LINE});
            this.Name = "TextBox";
            this.Text = "TextBox Controls";
            this.Load += new System.EventHandler(this.TextBox_Load);
            this.ResumeLayout(false);
        }
        #endregion
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new TextBox());
        }
        private void TextBox_Load(object sender, System.EventArgs e)
        {
            RICH_EDIT.LoadFile("c:\\temp\\RTFDOC.RTF");     
        }
    }
}


TextBox location

 
using System;
using System.Drawing;
using System.ruponentModel;
using System.Windows.Forms;
public class frmLogin : System.Windows.Forms.Form {
    System.Windows.Forms.TextBox txtUser;
    System.Windows.Forms.Button btnOK;
    System.Windows.Forms.Button btnCancel;
    public frmLogin() {
        txtUser = new System.Windows.Forms.TextBox();
        txtUser.Location = new Point(30, 15);
        txtUser.Size = new Size(250, 20);
        txtUser.Text = "";
        txtUser.Name = "txtUser";
        this.Controls.Add(txtUser);
        btnOK = new System.Windows.Forms.Button();
        btnOK.Location = new Point(40,(txtUser.Location.Y + txtUser.Size.Height + btnOK.Size.Height));
        btnOK.Text = "OK";
        btnOK.Name = "btnOK";
        this.Controls.Add(btnOK);
        btnCancel = new System.Windows.Forms.Button();
        btnCancel.Location = new Point((this.Size.Width -
                                        btnCancel.Size.Width) - 40,
           (txtUser.Location.Y + txtUser.Size.Height + btnOK.Size.Height));
        btnCancel.Text = "Cancel";
        btnCancel.Name = "btnCancel";
        this.Controls.Add(btnCancel);
        this.Size = new Size(this.Size.Width, btnCancel.Location.Y +
                             btnCancel.Size.Height + 60);
        btnCancel.Click += new System.EventHandler(btnCancelHandler);
        btnOK.Click += new System.EventHandler(btnEventHandler);
    }
    private void btnEventHandler(object sender, System.EventArgs e) {
        MessageBox.Show(((Button)sender).Name);
    }
    private void btnCancelHandler(object sender, System.EventArgs e) {
        MessageBox.Show("The second handler");
    }
    [STAThread]
    static void Main() {
        Application.Run(new frmLogin());
    }
}


Text Changed event

using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form
{
    private System.Windows.Forms.GroupBox GroupBox1;
    private System.Windows.Forms.Label Label4;
    private System.Windows.Forms.Label Label1;
    private System.Windows.Forms.PictureBox pic;
    private System.Windows.Forms.TextBox txt;
    private System.Windows.Forms.Button cmd;
    private System.Windows.Forms.Label Label2;
    private System.Windows.Forms.Label Label3;
    private System.Windows.Forms.ListBox eventLogList;
    public Form1() {
        InitializeComponent();
    }
    private void Log(String data)
    {
        eventLogList.Items.Add(data);
        int itemsPerPage = (int)(eventLogList.Height / eventLogList.ItemHeight);
        eventLogList.TopIndex = eventLogList.Items.Count - itemsPerPage;
    }
    private void txt_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        Log("Key Down: " + e.KeyCode.ToString() + e.KeyValue.ToString());
    }
    private void txt_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
        Log("Key Press: " + e.KeyChar.ToString());
    }
    private void txt_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        Log("Key Up: " + e.KeyCode.ToString() + e.KeyValue.ToString() + " Text is: " + txt.Text);
    }
    private void txt_TextChanged(object sender, System.EventArgs e)
    {
        Log("Changed: " + " Text is: " + txt.Text);
    }
    private void pic_MouseEnter(object sender, System.EventArgs e)
    {
        Log("Mouse Enter");
    }
    private void pic_MouseHover(object sender, System.EventArgs e)
    {
        Log("Mouse Hover");
    }
    private void pic_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        Log("Mouse Down: X=" + e.X.ToString() + " Y=" + e.Y.ToString() + " Button=" + e.Button.ToString());
    }
    private void pic_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        Log("Mouse Up: X=" + e.X.ToString() + " Y=" + e.Y.ToString() + " Button=" + e.Button.ToString());
    }
    private void pic_Click(object sender, System.EventArgs e)
    {
        Log("Click");
    }
    private void pic_DoubleClick(object sender, System.EventArgs e)
    {
        Log("Double Click");
    }
    private void pic_MouseLeave(object sender, System.EventArgs e)
    {
        Log("Mouse Leave");
    }
    private void InitializeComponent()
    {
        this.GroupBox1 = new System.Windows.Forms.GroupBox();
        this.Label4 = new System.Windows.Forms.Label();
        this.Label1 = new System.Windows.Forms.Label();
        this.pic = new System.Windows.Forms.PictureBox();
        this.txt = new System.Windows.Forms.TextBox();
        this.cmd = new System.Windows.Forms.Button();
        this.Label2 = new System.Windows.Forms.Label();
        this.Label3 = new System.Windows.Forms.Label();
        this.eventLogList = new System.Windows.Forms.ListBox();
        this.GroupBox1.SuspendLayout();
        ((System.ruponentModel.ISupportInitialize)(this.pic)).BeginInit();
        this.SuspendLayout();
        // 
        // GroupBox1
        // 
        this.GroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.GroupBox1.Controls.Add(this.Label4);
        this.GroupBox1.Controls.Add(this.Label1);
        this.GroupBox1.Controls.Add(this.pic);
        this.GroupBox1.Controls.Add(this.txt);
        this.GroupBox1.Controls.Add(this.cmd);
        this.GroupBox1.Controls.Add(this.Label2);
        this.GroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.System;
        this.GroupBox1.Location = new System.Drawing.Point(7, 0);
        this.GroupBox1.Name = "GroupBox1";
        this.GroupBox1.Size = new System.Drawing.Size(384, 148);
        this.GroupBox1.TabIndex = 12;
        this.GroupBox1.TabStop = false;
        // 
        // Label4
        // 
        this.Label4.Location = new System.Drawing.Point(92, 108);
        this.Label4.Name = "Label4";
        this.Label4.Size = new System.Drawing.Size(56, 16);
        this.Label4.TabIndex = 5;
        this.Label4.Text = "And here:";
        // 
        // Label1
        // 
        this.Label1.Location = new System.Drawing.Point(6, 24);
        this.Label1.Name = "Label1";
        this.Label1.Size = new System.Drawing.Size(144, 16);
        this.Label1.TabIndex = 2;
        this.Label1.Text = "Test keyboard events here:";
        // 
        // pic
        // 
        this.pic.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
        this.pic.Location = new System.Drawing.Point(156, 48);
        this.pic.Name = "pic";
        this.pic.Size = new System.Drawing.Size(192, 48);
        this.pic.TabIndex = 3;
        this.pic.TabStop = false;
        this.pic.DoubleClick += new System.EventHandler(this.pic_DoubleClick);
        this.pic.Click += new System.EventHandler(this.pic_Click);
        this.pic.MouseHover += new System.EventHandler(this.pic_MouseHover);
        this.pic.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pic_MouseUp);
        this.pic.MouseEnter += new System.EventHandler(this.pic_MouseEnter);
        this.pic.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pic_MouseDown);
        // 
        // txt
        // 
        this.txt.Location = new System.Drawing.Point(156, 20);
        this.txt.Name = "txt";
        this.txt.Size = new System.Drawing.Size(192, 21);
        this.txt.TabIndex = 1;
        this.txt.KeyUp += new System.Windows.Forms.KeyEventHandler(this.txt_KeyUp);
        this.txt.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txt_KeyPress);
        this.txt.TextChanged += new System.EventHandler(this.txt_TextChanged);
        this.txt.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txt_KeyDown);
        // 
        // cmd
        // 
        this.cmd.FlatStyle = System.Windows.Forms.FlatStyle.System;
        this.cmd.Location = new System.Drawing.Point(156, 100);
        this.cmd.Name = "cmd";
        this.cmd.Size = new System.Drawing.Size(88, 28);
        this.cmd.TabIndex = 4;
        this.cmd.Text = "Button1";
        this.cmd.MouseLeave += new System.EventHandler(this.pic_MouseLeave);
        this.cmd.Click += new System.EventHandler(this.pic_Click);
        this.cmd.MouseEnter += new System.EventHandler(this.pic_MouseEnter);
        this.cmd.MouseHover += new System.EventHandler(this.pic_MouseHover);
        this.cmd.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pic_MouseUp);
        this.cmd.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pic_MouseDown);
        // 
        // Label2
        // 
        this.Label2.Location = new System.Drawing.Point(20, 52);
        this.Label2.Name = "Label2";
        this.Label2.Size = new System.Drawing.Size(128, 16);
        this.Label2.TabIndex = 2;
        this.Label2.Text = "Test mouse events here:";
        // 
        // Label3
        // 
        this.Label3.Location = new System.Drawing.Point(23, 100);
        this.Label3.Name = "Label3";
        this.Label3.Size = new System.Drawing.Size(64, 24);
        this.Label3.TabIndex = 11;
        this.Label3.Text = "Label3";
        // 
        // eventLogList
        // 
        this.eventLogList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                    | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.eventLogList.FormattingEnabled = true;
        this.eventLogList.IntegralHeight = false;
        this.eventLogList.Location = new System.Drawing.Point(7, 156);
        this.eventLogList.Name = "eventLogList";
        this.eventLogList.Size = new System.Drawing.Size(384, 212);
        this.eventLogList.TabIndex = 10;
        // 
        // Form1
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(399, 374);
        this.Controls.Add(this.GroupBox1);
        this.Controls.Add(this.Label3);
        this.Controls.Add(this.eventLogList);
        this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        this.Name = "Form1";
        this.Text = "Event Tracker";
        this.GroupBox1.ResumeLayout(false);
        this.GroupBox1.PerformLayout();
        ((System.ruponentModel.ISupportInitialize)(this.pic)).EndInit();
        this.ResumeLayout(false);
    }
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}


User Events

/*
Professional Windows GUI Programming Using C#
by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury, 
   Zach Greenvoss, Shripad Kulkarni, Neil Whitlow
Publisher: Peer Information
ISBN: 1861007663
*/
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Diagnostics;
using System.Runtime.rupilerServices;
namespace UserEvents
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class UserEvents : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TextBox txtUsername;
        private System.Windows.Forms.Button btnLogin;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ruponentModel.Container components = null;
        LoginAuditInserter la = new LoginAuditInserter();
        public UserEvents()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            
            la.LoginAudit += new LoginAuditInserter.LoginAuditHandler(AddAuditEntry);
            la.LoginAudit += new LoginAuditInserter.LoginAuditHandler(AddEventLogEntry);
        }
        static public void AddAuditEntry(string username)
        {
            System.Diagnostics.Debug.WriteLine(username);
        }
        static public void AddEventLogEntry(string username)
        {
            string applicationName = "Login Audit";
            EventLog ev = new EventLog("Application");
            ev.Source = applicationName;
            ev.WriteEntry("Login Attempted.", EventLogEntryType.Information);
        }
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            la.LoginAudit -= new LoginAuditInserter.LoginAuditHandler(AddAuditEntry);
            la.LoginAudit -= new LoginAuditInserter.LoginAuditHandler(AddEventLogEntry);
            base.Dispose( disposing );
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.txtUsername = new System.Windows.Forms.TextBox();
            this.btnLogin = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // txtUsername
            // 
            this.txtUsername.Location = new System.Drawing.Point(8, 24);
            this.txtUsername.Name = "txtUsername";
            this.txtUsername.Size = new System.Drawing.Size(152, 20);
            this.txtUsername.TabIndex = 0;
            this.txtUsername.Text = "";
            // 
            // btnLogin
            // 
            this.btnLogin.Location = new System.Drawing.Point(184, 24);
            this.btnLogin.Name = "btnLogin";
            this.btnLogin.Size = new System.Drawing.Size(96, 23);
            this.btnLogin.TabIndex = 1;
            this.btnLogin.Text = "Login";
            this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
            // 
            // UserEvents
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 78);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.btnLogin,
                                                                          this.txtUsername});
            this.MaximizeBox = false;
            this.Name = "UserEvents";
            this.Text = "Login";
            this.ResumeLayout(false);
        }
        #endregion
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new UserEvents());
        }
        private void btnLogin_Click(object sender, System.EventArgs e)
        {
            la.AddAuditEntry(txtUsername.Text);     
        }
    }
    public class LoginAuditInserter
    {
        public delegate void LoginAuditHandler(string username);
        private AccessorContainer container = new AccessorContainer();
        private static int key = 0;
        public event LoginAuditHandler LoginAudit
        {
            [MethodImpl(MethodImplOptions.Synchronized)]
            add
            {
                container.Add(key, value);
            }
            [MethodImpl(MethodImplOptions.Synchronized)]
            remove
            {
                container.Remove(key, value);
            }
        }
        protected void OnLoginAudit(string username)
        {
            LoginAuditHandler loginAudit = (LoginAuditHandler)container.Get(key);
            if(username!=null)
            {
                loginAudit(username);
            }
        }
        public void AddAuditEntry(string username)
        {
            OnLoginAudit(username);
        }
    }
    public class AccessorContainer
    {
        private ArrayList arrayAccessor = new ArrayList();
        public Delegate Get(int key)
        {
            return ((Delegate)arrayAccessor[key]);
        }
        public void Add(int key, Delegate ptr)
        {
            try
            {
                arrayAccessor[key] = Delegate.rubine((Delegate)arrayAccessor[key], ptr);
            }
            catch(ArgumentOutOfRangeException)
            {
                arrayAccessor.Add(ptr);
            }
        }
        public void Remove(int key, Delegate ptr)
        {
            arrayAccessor.Remove(Delegate.Remove((Delegate)arrayAccessor[key], ptr));
        }
    }

}