MDI Basics


   

/*
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.ComponentModel;
using System.Windows.Forms;

namespace MDIBasics
{
    /// <summary>
    /// Summary description for Parent.
    /// </summary>
    public class Parent : System.Windows.Forms.Form
    {
        internal System.Windows.Forms.Button Button1;
        internal System.Windows.Forms.MainMenu MainMenu1;
        internal System.Windows.Forms.MenuItem MenuItem1;
        internal System.Windows.Forms.MenuItem MenuItem2;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Parent()
        {
            //
            // 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.Button1 = new System.Windows.Forms.Button();
            this.MainMenu1 = new System.Windows.Forms.MainMenu();
            this.MenuItem1 = new System.Windows.Forms.MenuItem();
            this.MenuItem2 = new System.Windows.Forms.MenuItem();
            this.SuspendLayout();
            // 
            // Button1
            // 
            this.Button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.Button1.Location = new System.Drawing.Point(82, 99);
            this.Button1.Name = "Button1";
            this.Button1.Size = new System.Drawing.Size(128, 68);
            this.Button1.TabIndex = 2;
            this.Button1.Text = "A Suspended Button";
            // 
            // MainMenu1
            // 
            this.MainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                                                                                      this.MenuItem1,
                                                                                      this.MenuItem2});
            // 
            // MenuItem1
            // 
            this.MenuItem1.Index = 0;
            this.MenuItem1.Text = "File";
            // 
            // MenuItem2
            // 
            this.MenuItem2.Index = 1;
            this.MenuItem2.Text = "Help";
            // 
            // Parent
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.Button1});
            this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.IsMdiContainer = true;
            this.Menu = this.MainMenu1;
            this.Name = "Parent";
            this.Text = "Parent";
            this.Load += new System.EventHandler(this.Parent_Load);
            this.ResumeLayout(false);

        }
        #endregion

        [STAThread]
        static void Main() 
        {
            Application.Run(new Parent());
        }

        private void Parent_Load(object sender, System.EventArgs e)
        {
            Child frmChild = new Child();
            frmChild.MdiParent = this;
            frmChild.Show();

        }
    }
    /// <summary>
    /// Summary description for Child.
    /// </summary>
    public class Child : System.Windows.Forms.Form
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Child()
        {
            //
            // 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()
        {
            // 
            // Child
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(236, 94);
            this.Name = "Child";
            this.Text = "Child";

        }
        #endregion
    }


}


           
          


MDI and Dock


   

/*
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.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Drawing.Drawing2D;

namespace DockingWindows
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class MDIMain : System.Windows.Forms.Form
    {
        internal System.Windows.Forms.Panel pnlDock;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public MDIMain()
        {
            //
            // 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.pnlDock = new System.Windows.Forms.Panel();
            this.SuspendLayout();
            // 
            // pnlDock
            // 
            this.pnlDock.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
                | System.Windows.Forms.AnchorStyles.Left);
            this.pnlDock.BackColor = System.Drawing.SystemColors.AppWorkspace;
            this.pnlDock.Name = "pnlDock";
            this.pnlDock.Size = new System.Drawing.Size(148, 302);
            this.pnlDock.TabIndex = 2;
            this.pnlDock.Visible = false;
            this.pnlDock.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlDock_Paint);
            // 
            // MDIMain
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(534, 304);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.pnlDock});
            this.IsMdiContainer = true;
            this.Name = "MDIMain";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new MDIMain());
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            Floater frmFloat = new Floater();
            frmFloat.Owner = this;
            frmFloat.Show();

        }


        public bool DrawDockRectangle
        {
            get
            {
                return pnlDock.Visible;
            }
            set
            {
                pnlDock.Visible = value;
            }
        }

        public void AddToDock(Form frm)
        {
            // Allow the form to be contained in a container control.
            frm.TopLevel = false;
            pnlDock.Controls.Add(frm);

            // Don&#039;t let the form be dragged off.
            frm.WindowState = FormWindowState.Maximized;
        }

        private void pnlDock_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            HatchBrush dockCueBrush = new HatchBrush(HatchStyle.LightDownwardDiagonal, 
                Color.White, Color.Gray);
            Pen dockCuePen = new Pen(dockCueBrush, 10);
            e.Graphics.DrawRectangle(dockCuePen, 
                new Rectangle(0, 0, pnlDock.Width, pnlDock.Height));

        }

    }
    /// <summary>
    /// Summary description for Floater.
    /// </summary>
    public class Floater : System.Windows.Forms.Form
    {
        internal System.Windows.Forms.PictureBox PictureBox2;
        internal System.Windows.Forms.Button Button3;
        internal System.Windows.Forms.Button Button2;
        internal System.Windows.Forms.Button Button1;
        internal System.Windows.Forms.Timer tmrDock;
        private System.ComponentModel.IContainer components;

        public Floater()
        {
            //
            // 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.components = new System.ComponentModel.Container();
            this.PictureBox2 = new System.Windows.Forms.PictureBox();
            this.Button3 = new System.Windows.Forms.Button();
            this.Button2 = new System.Windows.Forms.Button();
            this.Button1 = new System.Windows.Forms.Button();
            this.tmrDock = new System.Windows.Forms.Timer(this.components);
            this.SuspendLayout();
            // 
            // PictureBox2
            // 
            this.PictureBox2.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
                | System.Windows.Forms.AnchorStyles.Left) 
                | System.Windows.Forms.AnchorStyles.Right);
            this.PictureBox2.Location = new System.Drawing.Point(1, -3);
            this.PictureBox2.Name = "PictureBox2";
            this.PictureBox2.Size = new System.Drawing.Size(134, 172);
            this.PictureBox2.TabIndex = 2;
            this.PictureBox2.TabStop = false;
            
            // 
            // Button3
            // 
            this.Button3.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.Button3.Location = new System.Drawing.Point(14, 56);
            this.Button3.Name = "Button3";
            this.Button3.Size = new System.Drawing.Size(108, 20);
            this.Button3.TabIndex = 7;
            this.Button3.Text = "Controls";
            // 
            // Button2
            // 
            this.Button2.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.Button2.Location = new System.Drawing.Point(14, 36);
            this.Button2.Name = "Button2";
            this.Button2.Size = new System.Drawing.Size(108, 20);
            this.Button2.TabIndex = 6;
            this.Button2.Text = "Dockable";
            // 
            // Button1
            // 
            this.Button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.Button1.Location = new System.Drawing.Point(14, 16);
            this.Button1.Name = "Button1";
            this.Button1.Size = new System.Drawing.Size(108, 20);
            this.Button1.TabIndex = 5;
            this.Button1.Text = "Sample";
            // 
            // tmrDock
            // 
            this.tmrDock.Interval = 10;
            this.tmrDock.Tick += new System.EventHandler(this.tmrDock_Tick);
            // 
            // Floater
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
            this.ClientSize = new System.Drawing.Size(136, 166);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.Button3,
                                                                          this.Button2,
                                                                          this.Button1,
                                                                          this.PictureBox2});
            this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
            this.Name = "Floater";
            this.Text = "Floater";
            this.Move += new System.EventHandler(this.Floater_Move);
            this.ResumeLayout(false);

        }
        #endregion


        private Point dockTestAt;

        private void Floater_Move(object sender, System.EventArgs e)
        {
            // Determine the current location in parent form coordinates.
            Point mouseAt = this.Owner.PointToClient(this.Location);

            // Determine if the floated is close enough to dock.
            if (mouseAt.X < 5 &amp;&amp; mouseAt.X > -5)
            {
                if ((Control.MouseButtons &amp; MouseButtons.Left) == MouseButtons.Left)
                {
                    dockTestAt = mouseAt;

                    // Show the dock focus rectangle.
                    ((MDIMain)this.Owner).DrawDockRectangle = true;

                    // Reset the timer to poll for the MouseUp event.
                    tmrDock.Enabled = false;
                    tmrDock.Enabled = true;
                }
            }

        }

        private void tmrDock_Tick(object sender, System.EventArgs e)
        {
            if (dockTestAt.X == this.Owner.PointToClient(this.Location).X 
                &amp;&amp; dockTestAt.Y == this.Owner.PointToClient(this.Location).Y)
            {
                if (Control.MouseButtons == MouseButtons.None)
                {
                    // Dock in place.
                    tmrDock.Enabled = false;
                    ((MDIMain)this.Owner).AddToDock(this);
                }
            }
            else
            {
                // Mouse has moved. Disable this dock attempt.
                tmrDock.Enabled = false;
                ((MDIMain)this.Owner).DrawDockRectangle = false;
            }

        }


    }


}



           
          


MdiLayout.Cascade


   


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

public class Form1 : Form
{
      private System.Windows.Forms.MenuStrip menuStrip1;
      private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem child1ToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem windowToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem cascadeToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem tileHorizontalToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem tileVerticalToolStripMenuItem;
      private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
      
      public Form1() {
        InitializeComponent();
      }
      private void child1ToolStripMenuItem_Click(object sender, EventArgs e ){
        ChildForm formChild = new ChildForm("Child", "winter.jpg" );
        formChild.MdiParent = this;
        formChild.Show();
     }

     private void cascadeToolStripMenuItem_Click(object sender, EventArgs e ) {
       this.LayoutMdi( MdiLayout.Cascade );
     } 

     private void tileHorizontalToolStripMenuItem_Click(object sender, EventArgs e ) {
       this.LayoutMdi( MdiLayout.TileHorizontal );
     }
     private void tileVerticalToolStripMenuItem_Click(object sender, EventArgs e ) {
       this.LayoutMdi( MdiLayout.TileVertical );
     }
     private void InitializeComponent() {
         this.menuStrip1 = new System.Windows.Forms.MenuStrip();
         this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.child1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.windowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.cascadeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.tileHorizontalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.tileVerticalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
         this.menuStrip1.SuspendLayout();
         this.SuspendLayout();
         // 
         // menuStrip1
         // 
         this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.fileToolStripMenuItem,
            this.windowToolStripMenuItem});
         this.menuStrip1.Location = new System.Drawing.Point(0, 0);
         this.menuStrip1.MdiWindowListItem = this.windowToolStripMenuItem;
         this.menuStrip1.Name = "menuStrip1";
         this.menuStrip1.Size = new System.Drawing.Size(353, 24);
         this.menuStrip1.TabIndex = 1;
         this.menuStrip1.Text = "menuStrip1";
         // 
         // fileToolStripMenuItem
         // 
         this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.newToolStripMenuItem,
            this.exitToolStripMenuItem});
         this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
         this.fileToolStripMenuItem.Text = "File";
         // 
         // newToolStripMenuItem
         // 
         this.newToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.child1ToolStripMenuItem});
         this.newToolStripMenuItem.Name = "newToolStripMenuItem";
         this.newToolStripMenuItem.Text = "New";
         // 
         // child1ToolStripMenuItem
         // 
         this.child1ToolStripMenuItem.Name = "child1ToolStripMenuItem";
         this.child1ToolStripMenuItem.Text = "Child1";
         this.child1ToolStripMenuItem.Click += new System.EventHandler(this.child1ToolStripMenuItem_Click);
         // 
         // exitToolStripMenuItem
         // 
         this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
         this.exitToolStripMenuItem.Text = "Exit";
         // 
         // windowToolStripMenuItem
         // 
         this.windowToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.cascadeToolStripMenuItem,
            this.tileHorizontalToolStripMenuItem,
            this.tileVerticalToolStripMenuItem,
            this.toolStripSeparator1});
         this.windowToolStripMenuItem.Name = "windowToolStripMenuItem";
         this.windowToolStripMenuItem.Text = "Window";
         // 
         // cascadeToolStripMenuItem
         // 
         this.cascadeToolStripMenuItem.Name = "cascadeToolStripMenuItem";
         this.cascadeToolStripMenuItem.Text = "Cascade";
         this.cascadeToolStripMenuItem.Click += new System.EventHandler(this.cascadeToolStripMenuItem_Click);
         // 
         // tileHorizontalToolStripMenuItem
         // 
         this.tileHorizontalToolStripMenuItem.Name = "tileHorizontalToolStripMenuItem";
         this.tileHorizontalToolStripMenuItem.Text = "Tile Horizontal";
         this.tileHorizontalToolStripMenuItem.Click += new System.EventHandler(this.tileHorizontalToolStripMenuItem_Click);
         // 
         // tileVerticalToolStripMenuItem
         // 
         this.tileVerticalToolStripMenuItem.Name = "tileVerticalToolStripMenuItem";
         this.tileVerticalToolStripMenuItem.Text = "Tile Vertical";
         this.tileVerticalToolStripMenuItem.Click += new System.EventHandler(this.tileVerticalToolStripMenuItem_Click);
         // 
         // toolStripSeparator1
         // 
         this.toolStripSeparator1.Name = "toolStripSeparator1";
         // 
         // UsingMDIForm
         // 
         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
         this.ClientSize = new System.Drawing.Size(353, 310);
         this.Controls.Add(this.menuStrip1);
         this.IsMdiContainer = true;
         this.MainMenuStrip = this.menuStrip1;
         this.Name = "UsingMDIForm";
         this.Text = "UsingMDI";
         this.menuStrip1.ResumeLayout(false);
         this.ResumeLayout(false);
         this.PerformLayout();

      }

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }

}

public class ChildForm : Form
{
   private System.Windows.Forms.PictureBox picDisplay;
   
   public ChildForm( string title, string fileName )
   {
      InitializeComponent();

      Text = title; 

      picDisplay.Image = Image.FromFile(fileName);
   }
   
   private void InitializeComponent() {
         this.picDisplay = new System.Windows.Forms.PictureBox();
         ((System.ComponentModel.ISupportInitialize)(this.picDisplay)).BeginInit();
         this.SuspendLayout();
         // 
         // picDisplay
         // 
         this.picDisplay.Location = new System.Drawing.Point(1, 7);
         this.picDisplay.Name = "picDisplay";
         this.picDisplay.Size = new System.Drawing.Size(225, 247);
         this.picDisplay.TabIndex = 0;
         this.picDisplay.TabStop = false;
         // 
         // ChildForm
         // 
         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
         this.ClientSize = new System.Drawing.Size(227, 256);
         this.Controls.Add(this.picDisplay);
         this.Name = "ChildForm";
         this.Text = "Child";
         ((System.ComponentModel.ISupportInitialize)(this.picDisplay)).EndInit();
         this.ResumeLayout(false);

      }
}

           
          


MdiLayout.TileHorizontal


   

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

public class Form1 : Form
{
      private System.Windows.Forms.MenuStrip menuStrip1;
      private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem child1ToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem windowToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem cascadeToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem tileHorizontalToolStripMenuItem;
      private System.Windows.Forms.ToolStripMenuItem tileVerticalToolStripMenuItem;
      private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
      
      public Form1() {
        InitializeComponent();
      }
      private void child1ToolStripMenuItem_Click(object sender, EventArgs e ){
        ChildForm formChild = new ChildForm("Child", "winter.jpg" );
        formChild.MdiParent = this;
        formChild.Show();
     }

     private void cascadeToolStripMenuItem_Click(object sender, EventArgs e ) {
       this.LayoutMdi( MdiLayout.Cascade );
     } 

     private void tileHorizontalToolStripMenuItem_Click(object sender, EventArgs e ) {
       this.LayoutMdi( MdiLayout.TileHorizontal );
     }
     private void tileVerticalToolStripMenuItem_Click(object sender, EventArgs e ) {
       this.LayoutMdi( MdiLayout.TileVertical );
     }
     private void InitializeComponent() {
         this.menuStrip1 = new System.Windows.Forms.MenuStrip();
         this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.child1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.windowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.cascadeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.tileHorizontalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.tileVerticalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
         this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
         this.menuStrip1.SuspendLayout();
         this.SuspendLayout();
         // 
         // menuStrip1
         // 
         this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.fileToolStripMenuItem,
            this.windowToolStripMenuItem});
         this.menuStrip1.Location = new System.Drawing.Point(0, 0);
         this.menuStrip1.MdiWindowListItem = this.windowToolStripMenuItem;
         this.menuStrip1.Name = "menuStrip1";
         this.menuStrip1.Size = new System.Drawing.Size(353, 24);
         this.menuStrip1.TabIndex = 1;
         this.menuStrip1.Text = "menuStrip1";
         // 
         // fileToolStripMenuItem
         // 
         this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.newToolStripMenuItem,
            this.exitToolStripMenuItem});
         this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
         this.fileToolStripMenuItem.Text = "File";
         // 
         // newToolStripMenuItem
         // 
         this.newToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.child1ToolStripMenuItem});
         this.newToolStripMenuItem.Name = "newToolStripMenuItem";
         this.newToolStripMenuItem.Text = "New";
         // 
         // child1ToolStripMenuItem
         // 
         this.child1ToolStripMenuItem.Name = "child1ToolStripMenuItem";
         this.child1ToolStripMenuItem.Text = "Child1";
         this.child1ToolStripMenuItem.Click += new System.EventHandler(this.child1ToolStripMenuItem_Click);
         // 
         // exitToolStripMenuItem
         // 
         this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
         this.exitToolStripMenuItem.Text = "Exit";
         // 
         // windowToolStripMenuItem
         // 
         this.windowToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.cascadeToolStripMenuItem,
            this.tileHorizontalToolStripMenuItem,
            this.tileVerticalToolStripMenuItem,
            this.toolStripSeparator1});
         this.windowToolStripMenuItem.Name = "windowToolStripMenuItem";
         this.windowToolStripMenuItem.Text = "Window";
         // 
         // cascadeToolStripMenuItem
         // 
         this.cascadeToolStripMenuItem.Name = "cascadeToolStripMenuItem";
         this.cascadeToolStripMenuItem.Text = "Cascade";
         this.cascadeToolStripMenuItem.Click += new System.EventHandler(this.cascadeToolStripMenuItem_Click);
         // 
         // tileHorizontalToolStripMenuItem
         // 
         this.tileHorizontalToolStripMenuItem.Name = "tileHorizontalToolStripMenuItem";
         this.tileHorizontalToolStripMenuItem.Text = "Tile Horizontal";
         this.tileHorizontalToolStripMenuItem.Click += new System.EventHandler(this.tileHorizontalToolStripMenuItem_Click);
         // 
         // tileVerticalToolStripMenuItem
         // 
         this.tileVerticalToolStripMenuItem.Name = "tileVerticalToolStripMenuItem";
         this.tileVerticalToolStripMenuItem.Text = "Tile Vertical";
         this.tileVerticalToolStripMenuItem.Click += new System.EventHandler(this.tileVerticalToolStripMenuItem_Click);
         // 
         // toolStripSeparator1
         // 
         this.toolStripSeparator1.Name = "toolStripSeparator1";
         // 
         // UsingMDIForm
         // 
         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
         this.ClientSize = new System.Drawing.Size(353, 310);
         this.Controls.Add(this.menuStrip1);
         this.IsMdiContainer = true;
         this.MainMenuStrip = this.menuStrip1;
         this.Name = "UsingMDIForm";
         this.Text = "UsingMDI";
         this.menuStrip1.ResumeLayout(false);
         this.ResumeLayout(false);
         this.PerformLayout();

      }

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }

}

public class ChildForm : Form
{
   private System.Windows.Forms.PictureBox picDisplay;
   
   public ChildForm( string title, string fileName )
   {
      InitializeComponent();

      Text = title; 

      picDisplay.Image = Image.FromFile(fileName);
   }
   
   private void InitializeComponent() {
         this.picDisplay = new System.Windows.Forms.PictureBox();
         ((System.ComponentModel.ISupportInitialize)(this.picDisplay)).BeginInit();
         this.SuspendLayout();
         // 
         // picDisplay
         // 
         this.picDisplay.Location = new System.Drawing.Point(1, 7);
         this.picDisplay.Name = "picDisplay";
         this.picDisplay.Size = new System.Drawing.Size(225, 247);
         this.picDisplay.TabIndex = 0;
         this.picDisplay.TabStop = false;
         // 
         // ChildForm
         // 
         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
         this.ClientSize = new System.Drawing.Size(227, 256);
         this.Controls.Add(this.picDisplay);
         this.Name = "ChildForm";
         this.Text = "Child";
         ((System.ComponentModel.ISupportInitialize)(this.picDisplay)).EndInit();
         this.ResumeLayout(false);

      }
}


           
          


MaskedTextBox with MaskInputRejected event

   
 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

public class MainWindow : Form {
    public MainWindow() {
        InitializeComponent();
        CreateLabelControl();
    }

    private void btnDisplayData_Click(object sender, EventArgs e) {
        string textBoxData = "";
        textBoxData += string.Format("MultiLine:  {0}
", txtMultiline.Text);
        textBoxData += string.Format("
Password:  {0}
", txtPassword.Text);
        textBoxData += string.Format("
Uppercase:  {0}
", txtUpperCase.Text);
        textBoxData += string.Format("
Masked:  {0}
", txtMaskedTextBox.Text);

        MessageBox.Show(textBoxData, "Here is the data in your TextBoxes");
    }

    private void CreateLabelControl() {
        Label lblInstructions = new Label();
        lblInstructions.Text = "Please enter values in all the text boxes";
        lblInstructions.Font = new Font("Times New Roman", 9.75F, FontStyle.Bold);
        lblInstructions.AutoSize = true;
        lblInstructions.Location = new System.Drawing.Point(16, 13);
        lblInstructions.Size = new System.Drawing.Size(240, 16);
        this.Controls.Add(lblInstructions);
    }

    private void txtMaskedTextBox_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) {
        this.Text = string.Format("Error: {0}", e.RejectionHint);
    }

    private void txtMaskedTextBox_KeyDown(object sender, KeyEventArgs e) {
        this.Text = "Labels and TextBoxes";
    }
    private void InitializeComponent() {
        this.lblPassword = new System.Windows.Forms.Label();
        this.txtPassword = new System.Windows.Forms.TextBox();
        this.lblMultiline = new System.Windows.Forms.Label();
        this.txtMultiline = new System.Windows.Forms.TextBox();
        this.lblUpperCaseOnly = new System.Windows.Forms.Label();
        this.txtUpperCase = new System.Windows.Forms.TextBox();
        this.lblMaskedTextBox = new System.Windows.Forms.Label();
        this.txtMaskedTextBox = new System.Windows.Forms.MaskedTextBox();
        this.btnDisplayData = new System.Windows.Forms.Button();
        this.SuspendLayout();

        this.lblPassword.AutoSize = true;
        this.lblPassword.Location = new System.Drawing.Point(13, 43);
        this.lblPassword.Name = "lblPassword";
        this.lblPassword.Size = new System.Drawing.Size(94, 13);
        this.lblPassword.TabIndex = 0;
        this.lblPassword.Text = "&amp;Password TextBox:";

        this.txtPassword.Location = new System.Drawing.Point(125, 43);
        this.txtPassword.Name = "txtPassword";
        this.txtPassword.PasswordChar = &#039;*&#039;;
        this.txtPassword.Size = new System.Drawing.Size(220, 20);
        this.txtPassword.TabIndex = 1;

        this.lblMultiline.AutoSize = true;
        this.lblMultiline.Location = new System.Drawing.Point(14, 80);
        this.lblMultiline.Name = "lblMultiline";
        this.lblMultiline.Size = new System.Drawing.Size(86, 13);
        this.lblMultiline.TabIndex = 2;
        this.lblMultiline.Text = "&amp;Multiline TextBox:";

        this.txtMultiline.Location = new System.Drawing.Point(125, 80);
        this.txtMultiline.Multiline = true;
        this.txtMultiline.Name = "txtMultiline";
        this.txtMultiline.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
        this.txtMultiline.Size = new System.Drawing.Size(220, 52);
        this.txtMultiline.TabIndex = 3;

        this.lblUpperCaseOnly.AutoSize = true;
        this.lblUpperCaseOnly.Location = new System.Drawing.Point(15, 157);
        this.lblUpperCaseOnly.Name = "lblUpperCaseOnly";
        this.lblUpperCaseOnly.Size = new System.Drawing.Size(82, 13);
        this.lblUpperCaseOnly.TabIndex = 4;
        this.lblUpperCaseOnly.Text = "&amp;Uppercase Only:";

        this.txtUpperCase.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper;
        this.txtUpperCase.Location = new System.Drawing.Point(125, 157);
        this.txtUpperCase.Name = "txtUpperCase";
        this.txtUpperCase.Size = new System.Drawing.Size(220, 20);
        this.txtUpperCase.TabIndex = 5;
        // 
        this.lblMaskedTextBox.AutoSize = true;
        this.lblMaskedTextBox.Location = new System.Drawing.Point(15, 199);
        this.lblMaskedTextBox.Name = "lblMaskedTextBox";
        this.lblMaskedTextBox.Size = new System.Drawing.Size(83, 13);
        this.lblMaskedTextBox.TabIndex = 7;
        this.lblMaskedTextBox.Text = "Mas&amp;ked TextBox";
        // 
        this.txtMaskedTextBox.BeepOnError = true;
        this.txtMaskedTextBox.CausesValidation = false;
        this.txtMaskedTextBox.Location = new System.Drawing.Point(125, 199);
        this.txtMaskedTextBox.Mask = "(999) 000-0000";
        this.txtMaskedTextBox.Name = "txtMaskedTextBox";
        this.txtMaskedTextBox.Size = new System.Drawing.Size(220, 20);
        this.txtMaskedTextBox.TabIndex = 8;
        this.txtMaskedTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMaskedTextBox_KeyDown);
        this.txtMaskedTextBox.MaskInputRejected += new System.Windows.Forms.MaskInputRejectedEventHandler(this.txtMaskedTextBox_MaskInputRejected);
        // 
        this.btnDisplayData.Location = new System.Drawing.Point(257, 236);
        this.btnDisplayData.Name = "btnDisplayData";
        this.btnDisplayData.Size = new System.Drawing.Size(88, 23);
        this.btnDisplayData.TabIndex = 6;
        this.btnDisplayData.Text = "Display Data";
        this.btnDisplayData.Click += new System.EventHandler(this.btnDisplayData_Click);
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(357, 276);
        this.Controls.Add(this.txtMaskedTextBox);
        this.Controls.Add(this.lblMaskedTextBox);
        this.Controls.Add(this.btnDisplayData);
        this.Controls.Add(this.txtUpperCase);
        this.Controls.Add(this.lblUpperCaseOnly);
        this.Controls.Add(this.txtMultiline);
        this.Controls.Add(this.lblMultiline);
        this.Controls.Add(this.txtPassword);
        this.Controls.Add(this.lblPassword);
        this.Text = "Fun with Labels and TextBoxes";
        this.ResumeLayout(false);
        this.PerformLayout();
    }
    private System.Windows.Forms.Label lblPassword;
    private System.Windows.Forms.TextBox txtPassword;
    private System.Windows.Forms.Label lblMultiline;
    private System.Windows.Forms.TextBox txtMultiline;
    private System.Windows.Forms.Label lblUpperCaseOnly;
    private System.Windows.Forms.TextBox txtUpperCase;
    private System.Windows.Forms.Label lblMaskedTextBox;
    private System.Windows.Forms.MaskedTextBox txtMaskedTextBox;
    private System.Windows.Forms.Button btnDisplayData;

    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.Run(new MainWindow());
    }
}

    


Masked TextBox Host

/*
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.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace MaskedTextBoxHost
{
///

/// Summary description for MaskedTextBoxHost.
///

public class MaskedTextBoxHost : System.Windows.Forms.Form
{
///

/// Required designer variable.
///

private System.ComponentModel.Container components = null;

public MaskedTextBoxHost()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

///

/// Clean up any resources being used.
///

protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

///

/// Required method for Designer support – do not modify
/// the contents of this method with the code editor.
///

private void InitializeComponent()
{
//
// MaskedTextBoxHost
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Name = “MaskedTextBoxHost”;
this.Text = “MaskedTextBoxHost”;
this.Load += new System.EventHandler(this.MaskedTextBoxHost_Load);

}

///

/// The main entry point for the application.
///

[STAThread]
static void Main()
{
Application.Run(new MaskedTextBoxHost());
}

private void MaskedTextBoxHost_Load(object sender, System.EventArgs e)
{
MaskedTextBox txtMask = new
MaskedTextBox();
txtMask.Location = new Point(10, 10);
txtMask.Mask = “(###) ###-####”;
this.Controls.Add(txtMask);

}
}
public class MaskedTextBox : TextBox
{
private string mask;
public string Mask
{
get
{
return mask;
}
set
{
mask = value;
this.Text = “”;
}
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
if (Mask != “”)
{
// Suppress the typed character.
e.Handled = true;

string newText = this.Text;

// Loop through the mask, adding fixed characters as needed.
// If the next allowed character matches what the user has
// typed in (a number or letter), that is added to the end.
bool finished = false;
for (int i = this.SelectionStart; i < mask.Length; i++) { switch (mask[i].ToString()) { case "#" : // Allow the keypress as long as it is a number. if (Char.IsDigit(e.KeyChar)) { newText += e.KeyChar.ToString(); finished = true; break; } else { // Invalid entry; exit and don't change the text. return; } case "." : // Allow the keypress as long as it is a letter. if (Char.IsLetter(e.KeyChar)) { newText += e.KeyChar.ToString(); finished = true; break; } else { // Invalid entry; exit and don't change the text. return; } default : // Insert the mask character. newText += mask[i]; break; } if (finished) { break; } } // Update the text. this.Text = newText; this.SelectionStart = this.Text.Length; } } protected override void OnKeyDown(KeyEventArgs e) { // Stop special characters. e.Handled = true; } } } [/csharp]

Set MDI parent window


   


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

  public class Form2 : Form
  {
    private System.Windows.Forms.Button Button3;
    private System.Windows.Forms.Button Button2;
    private System.Windows.Forms.Button Button1;
      
      
    public Form2()
    {
      InitializeComponent();
    }
    private void InitializeComponent()
    {
      this.Button3 = new System.Windows.Forms.Button();
      this.Button2 = new System.Windows.Forms.Button();
      this.Button1 = new System.Windows.Forms.Button();
      this.SuspendLayout();
      // 
      // Button3
      // 
      this.Button3.Location = new System.Drawing.Point(120, 56);
      this.Button3.Name = "Button3";
      this.Button3.Size = new System.Drawing.Size(88, 32);
      this.Button3.TabIndex = 8;
      this.Button3.Text = "Become Child of Parent2";
      this.Button3.Click += new System.EventHandler(this.Button3_Click);
      // 
      // Button2
      // 
      this.Button2.Location = new System.Drawing.Point(12, 56);
      this.Button2.Name = "Button2";
      this.Button2.Size = new System.Drawing.Size(88, 32);
      this.Button2.TabIndex = 7;
      this.Button2.Text = "Become Child of Parent1";
      this.Button2.Click += new System.EventHandler(this.Button2_Click);
      // 
      // Button1
      // 
      this.Button1.Location = new System.Drawing.Point(12, 12);
      this.Button1.Name = "Button1";
      this.Button1.Size = new System.Drawing.Size(88, 32);
      this.Button1.TabIndex = 6;
      this.Button1.Text = "Become Parent";
      this.Button1.Click += new System.EventHandler(this.Button1_Click);
      // 
      // Form2
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
      this.ClientSize = new System.Drawing.Size(292, 154);
      this.Controls.Add(this.Button3);
      this.Controls.Add(this.Button2);
      this.Controls.Add(this.Button1);
      this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
      this.Name = "Form2";
      this.Text = "Form2";
      this.ResumeLayout(false);

    }

    private void Button1_Click(object sender, System.EventArgs e)
    {
      this.Hide();
      this.MdiParent = null;
      this.IsMdiContainer = true;
      this.Show();
    }

    private void Button2_Click(object sender, System.EventArgs e)
    {
      this.Hide();
      this.IsMdiContainer = false;
      this.MdiParent = Program.Main2;
      this.Show();
    }

    private void Button3_Click(object sender, System.EventArgs e)
    {
      this.Hide();
      this.IsMdiContainer = false;
      this.MdiParent = Program.Main1;
      this.Show();
    }
  }

  public class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
      Application.Exit();
    }
    private void InitializeComponent()
    {
      this.SuspendLayout();
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
      this.ClientSize = new System.Drawing.Size(422, 351);
      this.IsMdiContainer = true;
      this.Name = "Form1";
      this.Text = "Form1";
      this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed);
      this.ResumeLayout(false);

    }
  }

  static class Program
  {
    public static Form1 Main1 = new Form1();
    public static Form1 Main2 = new Form1();
    public static Form2 Child = new Form2();

    [STAThread]
    public static void Main()
    {
      Application.EnableVisualStyles();
      Main1.Text = "Parent 2";
      Main2.Text = "Parent 1";
      Main1.Show();
      Main2.Show();

      Child.MdiParent = Main2;
      Child.Show();

      System.Windows.Forms.Application.Run();
    }
  }