/*
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 MDIRelatives
{
///
/// Summary description for MDIRelatives.
///
public class MDIRelatives : System.Windows.Forms.Form
{
internal System.Windows.Forms.MainMenu MainMenu1;
internal System.Windows.Forms.MenuItem MenuItem1;
internal System.Windows.Forms.MenuItem mnuCascade;
internal System.Windows.Forms.MenuItem mnuTileV;
internal System.Windows.Forms.MenuItem mnuTileH;
internal System.Windows.Forms.MenuItem mnuMinimizeAll;
internal System.Windows.Forms.ImageList imgButtons;
internal System.Windows.Forms.ToolBar ToolBar1;
internal System.Windows.Forms.ToolBarButton cmdNew;
internal System.Windows.Forms.ToolBarButton cmdClose;
private System.ComponentModel.IContainer components;
public MDIRelatives()
{
//
// 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 );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(MDIRelatives));
this.MainMenu1 = new System.Windows.Forms.MainMenu();
this.MenuItem1 = new System.Windows.Forms.MenuItem();
this.mnuCascade = new System.Windows.Forms.MenuItem();
this.mnuTileV = new System.Windows.Forms.MenuItem();
this.mnuTileH = new System.Windows.Forms.MenuItem();
this.mnuMinimizeAll = new System.Windows.Forms.MenuItem();
this.imgButtons = new System.Windows.Forms.ImageList(this.components);
this.ToolBar1 = new System.Windows.Forms.ToolBar();
this.cmdNew = new System.Windows.Forms.ToolBarButton();
this.cmdClose = new System.Windows.Forms.ToolBarButton();
this.SuspendLayout();
//
// MainMenu1
//
this.MainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.MenuItem1});
//
// MenuItem1
//
this.MenuItem1.Index = 0;
this.MenuItem1.MdiList = true;
this.MenuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuCascade,
this.mnuTileV,
this.mnuTileH,
this.mnuMinimizeAll});
this.MenuItem1.Text = "Window";
//
// mnuCascade
//
this.mnuCascade.Index = 0;
this.mnuCascade.Text = "Cascase";
this.mnuCascade.Click += new System.EventHandler(this.mnuCascade_Click);
//
// mnuTileV
//
this.mnuTileV.Index = 1;
this.mnuTileV.Text = "Tile Vertical";
this.mnuTileV.Click += new System.EventHandler(this.mnuTileV_Click);
//
// mnuTileH
//
this.mnuTileH.Index = 2;
this.mnuTileH.Text = "Tile Horizontal";
this.mnuTileH.Click += new System.EventHandler(this.mnuTileH_Click);
//
// mnuMinimizeAll
//
this.mnuMinimizeAll.Index = 3;
this.mnuMinimizeAll.Text = "Minimize All";
this.mnuMinimizeAll.Click += new System.EventHandler(this.mnuMinimizeAll_Click);
//
// imgButtons
//
this.imgButtons.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
this.imgButtons.ImageSize = new System.Drawing.Size(16, 16);
this.imgButtons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgButtons.ImageStream")));
this.imgButtons.TransparentColor = System.Drawing.Color.Transparent;
//
// ToolBar1
//
this.ToolBar1.Appearance = System.Windows.Forms.ToolBarAppearance.Flat;
this.ToolBar1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.ToolBar1.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
this.cmdNew,
this.cmdClose});
this.ToolBar1.DropDownArrows = true;
this.ToolBar1.ImageList = this.imgButtons;
this.ToolBar1.Name = "ToolBar1";
this.ToolBar1.ShowToolTips = true;
this.ToolBar1.Size = new System.Drawing.Size(292, 41);
this.ToolBar1.TabIndex = 4;
this.ToolBar1.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.ToolBar1_ButtonClick);
//
// cmdNew
//
this.cmdNew.ImageIndex = 0;
this.cmdNew.Text = "New";
//
// cmdClose
//
this.cmdClose.ImageIndex = 1;
this.cmdClose.Text = "Close";
//
// MDIRelatives
//
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.ToolBar1});
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 = "MDIRelatives";
this.Text = "MDIRelatives";
this.ResumeLayout(false);
}
#endregion
[STAThread]
static void Main()
{
Application.Run(new MDIRelatives());
}
private string synchronizedText = "text";
private int mdiCount = 0;
private void ToolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
// Determine which button was clicked.
if (e.Button == cmdNew)
{
// Show a new ChildForm.
Child frmChild = new Child();
frmChild.MdiMDIRelatives = this;
frmChild.RefreshText(synchronizedText);
mdiCount++;
frmChild.Text = "MDI Child # " + mdiCount.ToString();
frmChild.Show();
}
else if (e.Button == cmdClose)
{
// Close the active child.
this.ActiveMdiChild.Close();
}
}
public void RefreshChildren(Child sender, string text)
{
// Store text for use when creating a child form, or if needed later.
synchronizedText = text;
// Update children.
foreach (Child frm in this.MdiChildren)
{
if (frm != sender)
{
frm.RefreshText(text);
}
}
}
private void mnuMinimizeAll_Click(object sender, System.EventArgs e)
{
foreach (Form frm in this.MdiChildren)
{
frm.WindowState = FormWindowState.Minimized;
}
}
private void mnuTileH_Click(object sender, System.EventArgs e)
{
this.LayoutMdi(MdiLayout.TileHorizontal);
}
private void mnuTileV_Click(object sender, System.EventArgs e)
{
this.LayoutMdi(MdiLayout.TileVertical);
}
private void mnuCascade_Click(object sender, System.EventArgs e)
{
this.LayoutMdi(MdiLayout.Cascade);
}
}
}
//===========================================================
//===========================================================
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace MDIRelatives
{
///
/// Summary description for Child.
///
public class Child : System.Windows.Forms.Form
{
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
public Child()
{
//
// 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 );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.textBox1.Location = new System.Drawing.Point(8, 8);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(212, 108);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
this.textBox1.TextChanged += new System.EventHandler(this.TextBox1_TextChanged);
//
// Child
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
this.ClientSize = new System.Drawing.Size(228, 126);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.textBox1});
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Name = "Child";
this.Text = "Child";
this.ResumeLayout(false);
}
#endregion
internal System.Windows.Forms.TextBox textBox1;
private bool isUpdating;
private void TextBox1_TextChanged(object sender, System.EventArgs e)
{
if (this.MdiParent != null && !isUpdating)
{
// The reference to the MDI parent must be converted to the appropriate
// form class in order to access the custom RefreshChildren() method.
((Parent)this.MdiParent).RefreshChildren(this, textBox1.Text);
}
}
public void RefreshText(string text)
{
// Disable the event to prevent an endless string of updates.
isUpdating = true;
// Update the control.
textBox1.Text = text;
// Re-enable the event handler.
isUpdating = false;
}
}
}
MDIRelatives.zip( 38 k)