using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
public class CompoundControl : System.Windows.Forms.UserControl {
public delegate Boolean ValueChangedEventHandler(int nValue);
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox comboBox1;
public event ValueChangedEventHandler Changed;
public CompoundControl() {
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
this.comboBox1.DropDownWidth = 121;
this.comboBox1.Items.AddRange(new object[] {"A","B","C","F","G","N"});
this.comboBox1.Location = new System.Drawing.Point(24, 48);
this.comboBox1.Size = new System.Drawing.Size(200, 21);
this.comboBox1.Text = "comboBox1";
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.OnSelectionIndexChange);
this.label1.Location = new System.Drawing.Point(16, 24);
this.label1.Text = "Select An Entry";
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.comboBox1,
this.label1});
this.Size = new System.Drawing.Size(240, 96);
this.ResumeLayout(false);
}
private void OnSelectionIndexChange(object sender,
System.EventArgs e) {
if (Changed != null)
Changed(this.comboBox1.SelectedIndex);
}
}
public class Form1 : System.Windows.Forms.Form {
private System.ComponentModel.Container components = null;
private CompoundControl compoundcomponent1 = null;
public Form1() {
this.compoundcomponent1 = new CompoundControl();
this.compoundcomponent1.Location = new System.Drawing.Point(24, 50);
this.compoundcomponent1.Name = "compound1";
this.compoundcomponent1.Size = new System.Drawing.Size(250, 100);
this.compoundcomponent1.Changed += new CompoundControl.ValueChangedEventHandler(OnChanged);
this.components = new System.ComponentModel.Container();
this.Size = new System.Drawing.Size(300, 300);
this.Controls.AddRange(new System.Windows.Forms.Control[]{this.compoundcomponent1,});
}
private bool OnChanged(int nIndex) {
MessageBox.Show(this, "New Index!" + nIndex);
return true;
}
[STAThread]
static void Main() {
Application.Run(new Form1());
}
}
GUI Windows Form
Define user control
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form
{
private ClockUserControl clockUserControl1;
public Form1() {
InitializeComponent();
}
private void InitializeComponent()
{
this.clockUserControl1 = new ClockUserControl();
this.SuspendLayout();
//
// clockUserControl1
//
this.clockUserControl1.Location = new System.Drawing.Point(12, 12);
this.clockUserControl1.Name = "clockUserControl1";
this.clockUserControl1.Size = new System.Drawing.Size(154, 74);
this.clockUserControl1.TabIndex = 0;
//
// Clock
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(178, 99);
this.Controls.Add(this.clockUserControl1);
this.Name = "Clock";
this.Text = "Clock";
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
public class ClockUserControl : UserControl
{
private System.Windows.Forms.Label displayLabel;
private System.Windows.Forms.Timer clockTimer;
public ClockUserControl() {
InitializeComponent();
}
private void clockTimer_Tick(object sender, EventArgs e) {
displayLabel.Text = DateTime.Now.ToLongTimeString();
}
private void InitializeComponent()
{
this.displayLabel = new System.Windows.Forms.Label();
this.clockTimer = new System.Windows.Forms.Timer( new System.ComponentModel.Container() );
this.SuspendLayout();
//
// displayLabel
//
this.displayLabel.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
this.displayLabel.Font = new System.Drawing.Font( "Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ( ( byte ) ( 0 ) ) );
this.displayLabel.Location = new System.Drawing.Point( 4, 10 );
this.displayLabel.Name = "displayLabel";
this.displayLabel.Size = new System.Drawing.Size( 143, 52 );
this.displayLabel.TabIndex = 0;
this.displayLabel.Text = "12:55:55 AM";
this.displayLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// clockTimer
//
this.clockTimer.Enabled = true;
this.clockTimer.Interval = 1000;
this.clockTimer.Tick += new System.EventHandler( this.clockTimer_Tick );
//
// ClockUserControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF( 6F, 13F );
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.Controls.Add( this.displayLabel );
this.Name = "ClockUserControl";
this.Size = new System.Drawing.Size( 150, 72 );
this.ResumeLayout( false );
}
}
Draw a Custom Control
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
public class SimpleCustomControl : System.Windows.Forms.Control {
public SimpleCustomControl() {
InitializeComponent();
}
private void SimpleCustomControl_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
g.FillRectangle(Brushes.Yellow, ClientRectangle);
g.DrawString("Hello, world", Font, Brushes.Black, 0, 0);
}
private void InitializeComponent() {
this.SuspendLayout();
this.Paint += new System.Windows.Forms.PaintEventHandler(this.SimpleCustomControl_Paint);
this.ResumeLayout(false);
}
}
public class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void InitializeComponent() {
this.simpleCustomControl1 = new SimpleCustomControl();
this.SuspendLayout();
this.simpleCustomControl1.Location = new System.Drawing.Point(12, 12);
this.simpleCustomControl1.Size = new System.Drawing.Size(178, 110);
this.simpleCustomControl1.Text = "simpleCustomControl1";
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 268);
this.Controls.Add(this.simpleCustomControl1);
this.ResumeLayout(false);
}
private SimpleCustomControl simpleCustomControl1;
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
subclass System.Windows.Forms.UserControl to create custom control
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
public class UserControl1 : System.Windows.Forms.UserControl {
private System.ComponentModel.Container components = null;
public UserControl1() {
this.Name = "UserControl1";
this.Paint += new
System.Windows.Forms.PaintEventHandler(this.OnPaint);
}
private void OnPaint(object sender,
System.Windows.Forms.PaintEventArgs e) {
e.Graphics.DrawString("Hello world", Font,
new SolidBrush(Color.Blue), ClientRectangle);
}
}
public class Form1 : System.Windows.Forms.Form {
private System.ComponentModel.Container components = null;
private System.Windows.Forms.Label label1;
private UserControl1 control1;
public Form1() {
this.control1 = new UserControl1();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
this.control1.Location = new System.Drawing.Point(32, 48);
this.control1.Size = new System.Drawing.Size(80, 24);
this.label1.Location = new System.Drawing.Point(32, 24);
this.label1.Size = new System.Drawing.Size(144, 24);
this.label1.Text = "Custom Control:";
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.label1,
this.control1});
this.ResumeLayout(false);
}
[STAThread]
static void Main() {
Application.Run(new Form1());
}
}
UpDown Derived
/*
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.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace UpDown_Derived
{
///
///
public class UpDownDerived : System.Windows.Forms.Form
{
///
///
private System.ComponentModel.Container components = null;
private System.Windows.Forms.Label label1;
private MyUpDownControl mDC = null ;
public UpDownDerived()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
///
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.mDC = new UpDown_Derived.MyUpDownControl();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// mDC
//
this.mDC.Items.Add(“FRANCE”);
this.mDC.Items.Add(“ITALY”);
this.mDC.Items.Add(“USA”);
this.mDC.Items.Add(“UK”);
this.mDC.Items.Add(“AUSTRALIA”);
this.mDC.Items.Add(“INDIA”);
this.mDC.Items.Add(“ZAMBIA”);
this.mDC.Items.Add(“MALASYIA”);
this.mDC.Location = new System.Drawing.Point(40, 40);
this.mDC.Name = “mDC”;
this.mDC.TabIndex = 0;
//
// label1
//
this.label1.Location = new System.Drawing.Point(16, 16);
this.label1.Name = “label1”;
this.label1.Size = new System.Drawing.Size(200, 16);
this.label1.TabIndex = 1;
this.label1.Text = “Derived DomainUpDown Controller”;
//
// UpDownDerived
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(248, 85);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.label1,
this.mDC});
this.Name = “UpDownDerived”;
this.Text = “My Domain Controller”;
this.Load += new System.EventHandler(this.UpDownDerived_Load);
this.ResumeLayout(false);
}
#endregion
///
///
[STAThread]
static void Main()
{
Application.Run(new UpDownDerived());
}
private void UpDownDerived_Load(object sender, System.EventArgs e)
{
}
}
///
///
public class MyUpDownControl : System.Windows.Forms.DomainUpDown
{
private int currentPos =0;
private string DisplayText =””;
public MyUpDownControl()
{
// Populate the control with items
Items.Add(“FRANCE”);
Items.Add(“ITALY”);
Items.Add(“USA”);
Items.Add(“UK”);
Items.Add(“AUSTRALIA”);
Items.Add(“INDIA”);
Items.Add(“ZAMBIA”);
Items.Add(“MALASYIA”);
}
public override void DownButton()
{
// Check if the Down Arrow is clicked
currentPos ++;
if ( currentPos >= Items.Count )
currentPos = 0 ;
UpdateEditText();
}
public override void UpButton()
{
// Check if the Up Arrow is clicked
currentPos — ;
if ( currentPos < 0 ) currentPos = Items.Count-1 ;
UpdateEditText();
}
protected override void UpdateEditText()
{
// Update the EditBox
DisplayText = (string)this.Items[currentPos ];
this.Text = DisplayText;
}
public void Sort()
{
if ( this.Sorted )
this.Sorted= false ;
else
this.Sorted= true ;
if ( this.Sorted )
this.Sort() ;
UpdateEditText() ;
}
}
}
[/csharp]
UpDown Control
/*
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.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace UpDown
{
/// <summary>
/// Summary description for UpDown.
/// </summary>
public class UpDown : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.DomainUpDown UPDOWN_DOMAIN;
private System.Windows.Forms.Label label1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public UpDown()
{
//
// 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.button2 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.UPDOWN_DOMAIN = new System.Windows.Forms.DomainUpDown();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// button2
//
this.button2.Location = new System.Drawing.Point(136, 80);
this.button2.Name = "button2";
this.button2.TabIndex = 8;
this.button2.Text = "Add Item";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(24, 80);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 7;
this.textBox1.Text = "";
//
// button1
//
this.button1.Location = new System.Drawing.Point(264, 40);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(64, 23);
this.button1.TabIndex = 6;
this.button1.Text = "Remove";
//
// UPDOWN_DOMAIN
//
this.UPDOWN_DOMAIN.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(192)), ((System.Byte)(192)));
this.UPDOWN_DOMAIN.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.UPDOWN_DOMAIN.ForeColor = System.Drawing.SystemColors.HotTrack;
this.UPDOWN_DOMAIN.Location = new System.Drawing.Point(24, 40);
this.UPDOWN_DOMAIN.Name = "UPDOWN_DOMAIN";
this.UPDOWN_DOMAIN.Size = new System.Drawing.Size(232, 26);
this.UPDOWN_DOMAIN.Sorted = true;
this.UPDOWN_DOMAIN.TabIndex = 5;
this.UPDOWN_DOMAIN.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.UPDOWN_DOMAIN.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left;
this.UPDOWN_DOMAIN.Wrap = true;
//
// label1
//
this.label1.Location = new System.Drawing.Point(24, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(136, 23);
this.label1.TabIndex = 9;
this.label1.Text = "UpDownDomain Control";
//
// UpDown
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(344, 117);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.label1,
this.UPDOWN_DOMAIN,
this.button1,
this.button2,
this.textBox1});
this.Name = "UpDown";
this.Text = "UpDownDomain Control";
this.Load += new System.EventHandler(this.UpDown_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new UpDown());
}
private void UpDown_Load(object sender, System.EventArgs e)
{
// Populate the UpDown Domain control with string objects
UPDOWN_DOMAIN.Items.Add("Visual C#");
UPDOWN_DOMAIN.Items.Add("Visual C++");
UPDOWN_DOMAIN.Items.Add("Visual VB");
UPDOWN_DOMAIN.Items.Add("Managed C++");
UPDOWN_DOMAIN.Items.Add("Crystal Reports");
UPDOWN_DOMAIN.Items.Add("MFC");
UPDOWN_DOMAIN.Items.Add("ATL");
UPDOWN_DOMAIN.Items.Add("COM");
UPDOWN_DOMAIN.Items.Add("DCOM");
UPDOWN_DOMAIN.Items.Add("COM+");
UPDOWN_DOMAIN.Items.Add("SETUP");
UPDOWN_DOMAIN.Items.Add("COMMAND LINE");
UPDOWN_DOMAIN.Items.Add("WINDOWS SERVICE");
UPDOWN_DOMAIN.Items.Add("WINDOWS LIBRARY");
UPDOWN_DOMAIN.Items.Add("ASP .NET WEB");
UPDOWN_DOMAIN.Items.Add("DATABASE APPLICATION");
}
private void button1_Click(object sender, System.EventArgs e)
{
// Select the Item that want to remove
int nItemSel = UPDOWN_DOMAIN.SelectedIndex;
if ( nItemSel >= 0 )
{
// Remove the item at the location
UPDOWN_DOMAIN.Items.RemoveAt(nItemSel);
// Update the control
UPDOWN_DOMAIN.Update();
// Clear the edit box
UPDOWN_DOMAIN.Text = "" ;
}
}
private void button2_Click(object sender, System.EventArgs e)
{
if ( textBox1.Text == "" )
{
MessageBox.Show("Enter a string to add");
return ;
}
// Add the new string the UpDownDomain control
UPDOWN_DOMAIN.Items.Add(textBox1.Text);
textBox1.Text = "" ;
}
}
}
String based DomainUpDown (Spinner)
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class UpDownForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Label lblCurrSel;
private System.Windows.Forms.Button btnGetSelections;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.DomainUpDown domainUpDown;
public UpDownForm()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label ();
this.domainUpDown = new System.Windows.Forms.DomainUpDown ();
this.btnGetSelections = new System.Windows.Forms.Button ();
this.lblCurrSel = new System.Windows.Forms.Label ();
label1.Location = new System.Drawing.Point (8, 24);
label1.Text = "Domain UpDown Control";
label1.Size = new System.Drawing.Size (224, 32);
label1.Font = new System.Drawing.Font ("Verdana", 12);
label1.TabIndex = 2;
domainUpDown.Location = new System.Drawing.Point (264, 24);
domainUpDown.Text = "domainUpDown1";
domainUpDown.Size = new System.Drawing.Size (168, 20);
domainUpDown.TabIndex = 0;
domainUpDown.Sorted = true;
domainUpDown.Wrap = true;
domainUpDown.SelectedItemChanged += new System.EventHandler (this.domainUpDown_SelectedItemChanged);
domainUpDown.Items.AddRange(new object[4] {"B", "A", "C", "(D)"});
btnGetSelections.Location = new System.Drawing.Point (16, 136);
btnGetSelections.Size = new System.Drawing.Size (136, 24);
btnGetSelections.TabIndex = 4;
btnGetSelections.Text = "Get Current Selections";
btnGetSelections.Click += new System.EventHandler (this.btnGetSelections_Click);
lblCurrSel.Location = new System.Drawing.Point (176, 120);
lblCurrSel.Size = new System.Drawing.Size (256, 48);
this.Text = "Spin Controls";
this.AutoScaleBaseSize = new System.Drawing.Size (5, 13);
this.ClientSize = new System.Drawing.Size (448, 181);
this.Controls.Add (this.lblCurrSel);
this.Controls.Add (this.btnGetSelections);
this.Controls.Add (this.label1);
this.Controls.Add (this.domainUpDown);
}
static void Main()
{
Application.Run(new UpDownForm());
}
protected void domainUpDown_SelectedItemChanged (object sender, System.EventArgs e)
{
this.Text = "You changed the string value...";
}
protected void btnGetSelections_Click (object sender, System.EventArgs e)
{
// Get info from updowns...
lblCurrSel.Text = "String: "
+ domainUpDown.Text ;
}
}