SIGN UP MEMBER LOGIN:    
ARTICLE

Simple Windows Forms Events and Interfaces

Posted by Rajadurai P Articles | Windows Forms C# September 03, 2001
This article contains a c# code which makes use of the concepts of Events and Interfaces together.
Reader Level:

Description

This article contains a c# code which makes use of the concepts of Events and Interfaces together. The attached code makes use of the concepts of Events and Interfaces together. This is a simple Windows form which contains a textbox, labels and a button. The textbox receives the focus on page load. The keydown events of the textbox are captured and whenever any of the arrow keys is pressed, an Event is fired through an Interface which displays the name of the arrow key pressed.

How to Use

Copy the below given code in a text editor and save it as a .cs file. Compile it using "csc  <filename>" and Run the .exe file.

Source Code

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data; 
namespace Events_Interfaces
{
public delegate void dele();
public interface IEvents
{
event dele event1;
void FireEvent();
}
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label3;
private System.ComponentModel.Container components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.SuspendLayout();
this.textBox1.Location = new System.Drawing.Point(8, 80);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(56,23);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "";
this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Key_Press);
this.label1.Location = new System.Drawing.Point(16, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(256, 64);
this.label1.TabIndex = 0;
this.label1.Text = "Whenever you use the arrow keys inside the text box, Corresponding events will be" + " fired to display the label appropriately. Have a try!!";
this.button1.Location = new
System.Drawing.Point(240, 112);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(48,23);
this.button1.TabIndex = 3;
this.button1.Text = "Exit";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label2
//
this.label2.Location = new System.Drawing.Point(88, 80);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(184,23);
this.label2.TabIndex = 2;
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label3
//
this.label3.Location = new System.Drawing.Point(8, 104);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(64,23);
this.label3.TabIndex = 4;
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 16);
this.ClientSize = new System.Drawing.Size(292,141);
this.Controls.AddRange(new System.Windows.Forms.Control[] {this.label3,this.button1,this.label2,this.textBox1,
this.label1});
this.Font = new System.Drawing.Font("Comic Sans MS", 8.25F, System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Name = "Form1";
this.Text = "Events";
this.ResumeLayout(false);
}
#endregion
static void Main()
{
Application.Run(
new Form1());
}
private void Key_Press(object sender, System.Windows.Forms.KeyEventArgs e)
{
textBox1.Text = "";
label2.Text = "";
string keyId = e.KeyCode.ToString();
switch (keyId)
{
case "Right":
label3.Text = "";
IEvents id1 =
new EventClass1();
id1.event1 +=
new dele(EventFired1);
id1.FireEvent();
break;
case "Left":
label3.Text = "";
IEvents id2 = new EventClass2();
id2.event1 +=
new dele(EventFired2);
id2.FireEvent();
break;
case "Down":
label3.Text = "";
IEvents id3 =
new EventClass3();
id3.event1 +=
new dele(EventFired3);
id3.FireEvent();
break;
case "Up":
label3.Text = "";
IEvents id4 =
new EventClass4();
id4.event1 +=
new dele(EventFired4);
id4.FireEvent();
break;
default:
label3.Text = keyId;
break;
}
}
public void EventFired1()
{
label2.Text = "";
label2.Text = "You pressed RIGHT arrow key";
}
public void EventFired2()
{
label2.Text = "";
label2.Text = "You pressed LEFT arrow key";
}
public void EventFired3()
{
label2.Text = "";
label2.Text = "You pressed DOWN arrow key";
}
public void EventFired4()
{
label2.Text = "";
label2.Text = "You pressed UP arrow key";
}
private void button1_Click(object sender, System.EventArgs e)
{
Application.Exit();
}
}
public class EventClass1 : IEvents
{
public event dele event1;
public void FireEvent()
{
event1();
}
}
public class EventClass2 : IEvents
{
public event dele event1;
public void FireEvent()
{
event1();
}
}
public class EventClass3 : IEvents
{
public event dele event1;
public void FireEvent()
{
event1();
}
}
public class EventClass4 : IEvents
{
public event dele event1;
public void FireEvent()
{
event1();
}
}
}
//--------------------------------------------------
//References that may be needed while compiling
//System
//System.Drawing
//System.Windows.Forms

Login to add your contents and source code to this article
share this article :
post comment
 

hello sir my name vaneet i waana become s/w developer could u tell me wht i do. i done PGDCA plz tell wht is good for me ASP.NET & SQL & WEB PUBLISHER ..? plz tell me

Posted by vaneet kumar Jan 17, 2008
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
Team Foundation Server Hosting
Become a Sponsor