GUI Windows Forms C# Tutorial

using System;
using System.Drawing;
using System.Windows.Forms;
   
class TextBoxWithToolBar: Form
{
     TextBox       txtbox = new TextBox();
     MenuItem      miEditCut, miEditCopy, miEditPaste;
     ToolBarButton tbbCut, tbbCopy, tbbPaste;
   
     public static void Main()
     {
          System.Threading.Thread.CurrentThread.ApartmentState =
                                        System.Threading.ApartmentState.STA;
   
          Application.Run(new TextBoxWithToolBar());
     }
     public TextBoxWithToolBar()
     {
          txtbox.Parent      = this;
          txtbox.Dock        = DockStyle.Fill;
          txtbox.Multiline   = true;
          txtbox.ScrollBars  = ScrollBars.Both;
          txtbox.AcceptsTab  = true;
   
          Bitmap bm = new Bitmap(GetType(), "TextBoxWithToolBar.bmp");
   
          ImageList imglst = new ImageList();
          imglst.Images.AddStrip(bm);
          imglst.TransparentColor = Color.Cyan;
   
          ToolBar tbar = new ToolBar();
          tbar.Parent = this;
          tbar.ImageList = imglst;
          tbar.ShowToolTips = true;
          tbar.ButtonClick += new ToolBarButtonClickEventHandler(ToolBarOnClick);
   
          Menu = new MainMenu();
   
          MenuItem mi = new MenuItem("&Edit");
          mi.Popup += new EventHandler(MenuEditOnPopup);
          Menu.MenuItems.Add(mi);
   
          miEditCut = new MenuItem("Cu&t");
          miEditCut.Click += new EventHandler(MenuEditCutOnClick);
          miEditCut.Shortcut = Shortcut.CtrlX;
          Menu.MenuItems[0].MenuItems.Add(miEditCut);
   
          tbbCut = new ToolBarButton();
          tbbCut.ImageIndex = 4;
          tbbCut.ToolTipText = "Cut";
          tbbCut.Tag = miEditCut;
          tbar.Buttons.Add(tbbCut);
   
          miEditCopy = new MenuItem("&Copy");
          miEditCopy.Click += new EventHandler(MenuEditCopyOnClick);
          miEditCopy.Shortcut = Shortcut.CtrlC;
          Menu.MenuItems[0].MenuItems.Add(miEditCopy);
   
          tbbCopy = new ToolBarButton();
          tbbCopy.ImageIndex = 5;
          tbbCopy.ToolTipText = "Copy";
          tbbCopy.Tag = miEditCopy;
          tbar.Buttons.Add(tbbCopy);
   
          miEditPaste = new MenuItem("&Paste");
          miEditPaste.Click += new EventHandler(MenuEditPasteOnClick);
          miEditPaste.Shortcut = Shortcut.CtrlV;
          Menu.MenuItems[0].MenuItems.Add(miEditPaste);
   
          tbbPaste = new ToolBarButton();
          tbbPaste.ImageIndex = 6;
          tbbPaste.ToolTipText = "Paste";
          tbbPaste.Tag = miEditPaste;
          tbar.Buttons.Add(tbbPaste);
   
          Timer timer = new Timer();
          timer.Interval = 250;
          timer.Tick += new EventHandler(TimerOnTick);
          timer.Start();
     }
     void MenuEditOnPopup(object obj, EventArgs ea)
     {
          miEditCut.Enabled = 
          miEditCopy.Enabled = (txtbox.SelectionLength > 0);
          miEditPaste.Enabled = 
               Clipboard.GetDataObject().GetDataPresent(typeof(string));
     }
     void TimerOnTick(object obj, EventArgs ea)
     {
          tbbCut.Enabled =
          tbbCopy.Enabled = (txtbox.SelectionLength) > 0;
          tbbPaste.Enabled = 
               Clipboard.GetDataObject().GetDataPresent(typeof(string));
     }
     void ToolBarOnClick(object obj, ToolBarButtonClickEventArgs tbbcea)
     {
          ToolBarButton tbb = tbbcea.Button;
          MenuItem mi = (MenuItem) tbb.Tag;
   
          mi.PerformClick();
     }
     void MenuEditCutOnClick(object obj, EventArgs ea)
     {
          txtbox.Cut();
     }
     void MenuEditCopyOnClick(object obj, EventArgs ea)
     {
          txtbox.Copy();
     }
     void MenuEditPasteOnClick(object obj, EventArgs ea)
     {
          txtbox.Paste();
     }
}