GUI Windows Forms C# Tutorial

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class DialogApplyMethodInDialogClass : System.Windows.Forms.Form
{
  private System.Windows.Forms.Button btnCreate;
  private System.Windows.Forms.Label lblReturn;
  public DialogApplyMethodInDialogClass()
  {
    InitializeComponent();
  }
  private void InitializeComponent()
  {
    this.btnCreate = new System.Windows.Forms.Button();
    this.lblReturn = new System.Windows.Forms.Label();
    this.SuspendLayout();
    this.btnCreate.Location = new System.Drawing.Point(80, 144);
    this.btnCreate.Name = "btnCreate";
    this.btnCreate.Size = new System.Drawing.Size(136, 23);
    this.btnCreate.TabIndex = 0;
    this.btnCreate.Text = "Create Dialog Box";
    this.btnCreate.Click += new System.EventHandler(this.btnCreate_Click);
    this.lblReturn.Location = new System.Drawing.Point(88, 64);
    this.lblReturn.Name = "lblReturn";
    this.lblReturn.Size = new System.Drawing.Size(152, 23);
    this.lblReturn.TabIndex = 1;
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(292, 273);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                             this.lblReturn,
                                             this.btnCreate});
    this.ResumeLayout(false);
  }
  [STAThread]
  static void Main() 
  {
    Application.Run(new DialogApplyMethodInDialogClass());
  }
  private void btnCreate_Click(object sender, System.EventArgs e)
  {
    DialogDemo dlg = new DialogDemo(this);
    dlg.EnableApplyButton = false;
    dlg.ShowDialog();
    
    if (dlg.DialogResult == DialogResult.OK)
      {lblReturn.Text = dlg.TextOut;}
    else
      {lblReturn.Text = dlg.DialogResult.ToString();}
  }
  
  public void UpdateLabel(string str)
  {
    lblReturn.Text = str;
  }
}
public class DialogDemo : Form
{
  private Button btnApply = new Button();
  private TextBox txt = new TextBox();
  private DialogApplyMethodInDialogClass f;
  
  public DialogDemo(DialogApplyMethodInDialogClass f)
  {
    this.f = f;
    FormBorderStyle = FormBorderStyle.FixedDialog;
    BackColor = System.Drawing.Color.Aquamarine;
    ControlBox = false;
    MaximizeBox = false;
    MinimizeBox = false;
    ShowInTaskbar = false;
    Size = new Size(400,200);
    StartPosition = FormStartPosition.CenterScreen;
    Button btnOK = new Button();
    btnOK.Text = "OK";
    btnOK.DialogResult = DialogResult.OK;
    btnOK.Location = new Point(50,50);
    btnOK.TabIndex = 0;
    Controls.Add(btnOK);
    
    btnApply.Text = "Apply";
    btnApply.Location = new Point(150,50);
    btnApply.TabIndex = 1;
    btnApply.Enabled = false;
    btnApply.Click += new EventHandler(ApplyOnClick);
    Controls.Add(btnApply);
    
    Button btnCancel = new Button();
    btnCancel.Text = "Cancel";
    btnCancel.DialogResult = DialogResult.Cancel;
    btnCancel.Location = new Point(250,50);
    btnCancel.TabIndex = 2;
    Controls.Add(btnCancel);
    
    txt.Size = new Size(100,15);
    txt.Location = new Point(150,15);
    txt.TextChanged += new EventHandler(TextBoxChanged);
    Controls.Add(txt);
  }
  private void ApplyOnClick(object sender, EventArgs e)
  {
    f.UpdateLabel(txt.Text);
    EnableApplyButton = false;
  }
  
  private void TextBoxChanged(object sender, EventArgs e)
  {
    TextBox txt = (TextBox)sender;
    DialogDemo dlg = (DialogDemo)txt.Parent;
    dlg.EnableApplyButton = true;  
  }
  public bool EnableApplyButton
  {
    get {return btnApply.Enabled; }
    set {btnApply.Enabled = value; }
  }
  
  public string TextOut
  {
    get
      {return txt.Text; }
  }
}