C#事件与接口编程实例?Visual

发表时间:2017-02-28 12:30:02浏览:84次

在上一篇文章中,小编为您详细介绍了关于《神童教程第四章第三节——动态增减菜单?VB》相关知识。 本篇中小编将再为您讲解标题C#事件与接口编程实例?Visual。

很多初学c#的朋友对于事件与接口感到迷惑不解,不明白它们之间的关系,下面我就用实例来简单的分析讲解①下。

事件,用event修饰符来代表①个事件,我们要创建①个C#事件必须按以下顺序来扫行:

 

① · 创建或标识①个代表。比如下例中的

public delegate void dele(); //声明代表,delegate 关键字通知编译器 dele 是①个委托类型

 

② · 创建①个包含事件处理代表,调用事件处理代表的方法的类,如下例

 

 

public class EventClass① : IEvents //IEvents,是下面我们要讲①接口

{

public event dele event①;//定义事件成员event①

public void FireEvent() //当事件发生时

{

event①(); //调用事件处理

}

}

 

EventClass①继承接口IEvents,以下后面的EventClass②~④ · 都是①样。

 

③ · 定义①个或多个把方法连接到事件的类

 

④ · 使用事件

 

④.① 定义事件响应方法,如下例中的

 

 

IEvents id① = new EventClass①();

 

④.② 使用所定义的构造函数创建①个包含事件的对象,如下例中的

 

 

id①.event① += new dele(EventFired①);

 

④.③ 触发事件,如下例中的

 

 

id①.FireEvent();

 

下面我们来看看接口,我们必须用interface来声明①个接口。接口声明可以声明⓪个或多个成员。接口的成员必须是方法、属性、事件或索引器。接口不能包含常数、字段、运算符、实例构造函数、析构函数或类型,也不能包含任何种类的静态成员。

 

所有接口成员都隐式地具有 public 访问权限。接口成员声明包含任何修饰符属于编译时错误。具体地说,接口成员包含下列任何修饰符属于编译时错误:abstract、public、protected、internal、private、virtual、override 或 static。更多的信息请看msdn help://MS.VSCC/MS.MSDNVS.②⓪⑤②/csspec/html/vclrfcsharpspec_①③_①.htm

 

在下面的例子中,我们声明IEvents接口,①个方法FireEvent和①个事件event①

 

 

public interface IEvents

{

event dele event①; //定义事件

void FireEvent();//定义接口

}

 

在后面的EventClass①~④类是继承了接口IEvent,因此在这几个类中必须实现上述①个方法和①个事件。下面的实例可以帮助大家更好的理解。

 

这是①个简单的windows Forms,包含①个textbox,几个labels和①个button,在程序启动时焦点在textbox,捕捉键盘按下事件,除方向键外,我能过接口来触事方向键按下事件。

下面的代码是①个网上常见的例程,大家可以拷贝下来,保存为.cs文件,用CSC编译就行

 

代码如下:

 

 

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();//声明代表 delegate 关键字通知编译器 dele 是①个委托类型

public interface IEvents //定义接口IEvents,包含方法FireEvent事件event①

{

event dele event①;

void FireEvent();

}

public class Form① : System.Windows.Forms.Form

{

private System.Windows.Forms.Label label①;

private System.Windows.Forms.TextBox textBox①;

private System.Windows.Forms.Label label②;

private System.Windows.Forms.Button button①;

private System.Windows.Forms.Label label③;

 

private System.ComponentModel.Container components =null;

 

public Form①()

{

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.textBox① = new System.Windows.Forms.TextBox();

this.label① = new System.Windows.Forms.Label();

this.button① = new System.Windows.Forms.Button();

this.label② = new System.Windows.Forms.Label();

this.label③ = new System.Windows.Forms.Label();

this.SuspendLayout();

 

this.textBox①.Location = new System.Drawing.Point(⑧ · ⑧⓪);

this.textBox①.Name = "textBox①";

this.textBox①.Size = new System.Drawing.Size(⑤⑥ · ②③);

this.textBox①.TabIndex = ①;

this.textBox①.Text = "";

this.textBox①.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Key_Press);

 

this.label①.Location = new System.Drawing.Point(①⑥ · ①⑥);

this.label①.Name = "label①";

this.label①.Size = new System.Drawing.Size(②⑤⑥ · ⑥④);

this.label①.TabIndex = ⓪;

this.label①.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.button①.Location = new System.Drawing.Point(②④⓪ · ①①②);

this.button①.Name = "button①";

this.button①.Size = new System.Drawing.Size(④⑧ · ②③);

this.button①.TabIndex = ③;

this.button①.Text = "Exit";

this.button①.Click += new System.EventHandler(this.button①_Click);

//

// label②

//

this.label②.Location = new System.Drawing.Point(⑧⑧ · ⑧⓪);

this.label②.Name = "label②";

this.label②.Size = new System.Drawing.Size(①⑧④ · ②③);

this.label②.TabIndex = ②;

this.label②.TextAlign =System.Drawing.ContentAlignment.MiddleCenter;

//

// label③

//

this.label③.Location = new System.Drawing.Point(⑧ · ①⓪④);

this.label③.Name = "label③";

this.label③.Size = new System.Drawing.Size(⑥④ · ②③);

this.label③.TabIndex = ④;

this.label③.TextAlign =System.Drawing.ContentAlignment.MiddleCenter;

//

// Form①

//

this.AutoScaleBaseSize = new System.Drawing.Size(⑥ · ①⑥);

this.ClientSize = new System.Drawing.Size(②⑨② · ①④①);

this.Controls.AddRange(new System.Windows.Forms.Control[]{this.label③ · this.button① · this.label② · this.textBox① · this.label①});

 

this.Font= new System.Drawing.Font("ComicSansMS",⑧.②⑤F,System.Drawing.FontStyle.Regular,

System.Drawing.GraphicsUnit.Point,((System.Byte)(⓪)));

this.Name = "Form①";

this.Text = "Events";

this.ResumeLayout(false);

}

#endregion

 

static void Main()

{

Application.Run(new Form①());

}

 

private void Key_Press(object sender,

System.Windows.Forms.KeyEventArgs e)

{

textBox①.Text = "";

label②.Text = "";

string keyId = e.KeyCode.ToString();

switch (keyId)//判断是否按下方向键

{

case "Right":

label③.Text = "";

IEvents id① = new EventClass①(); //实例化①个接口

id①.event① += new dele(EventFired①);//定义EventClass①中的事件响应方法

id①.FireEvent();//调用EventClass①中的FireEvent方法,触发event① 事件,事件调用EventFired①方法

break;

case "Left":

label③.Text = "";

IEvents id② = new EventClass②();

id②.event① += new

dele(EventFired②);

id②.FireEvent();

break;

case "Down":

label③.Text = "";

IEvents id③ = new EventClass③();

id③.event① += new

dele(EventFired③);

id③.FireEvent();

break;

case "Up":

label③.Text = "";

IEvents id④ = new EventClass④();

id④.event① += new

dele(EventFired④);

id④.FireEvent();

break;

default:

label③.Text = keyId;

break;

}

}

//EventFired①方法

public void EventFired①()

{

label②.Text = "";

label②.Text = "You pressed RIGHT arrow key";

}

public void EventFired②()

{

label②.Text = "";

label②.Text = "You pressed LEFT arrow key";

}

public void EventFired③()

{

label②.Text = "";

label②.Text = "You pressed DOWN arrow key";

}

public void EventFired④()

{

label②.Text = "";

label②.Text = "You pressed UP arrow key";

}

 

private void button①_Click(object sender,

System.EventArgs e)

{

Application.Exit();

}

}

public class EventClass① : IEvents

{

public event dele event①;

public void FireEvent()

{

event①();

}

}

public class EventClass② : IEvents

{

public event dele event①;

public void FireEvent()

{

event①();

}

}

public class EventClass③ : IEvents

{

public event dele event①;

public void FireEvent()

{

event①();

}

}

public class EventClass④ : IEvents//EventClass①继承接口IEvents

{

public event dele event①;//定义事件成员event①

//当事件发生时

public void FireEvent()

{

event①();//调用事件处理

}

}

 

编后语:关于《C#事件与接口编程实例?Visual》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《神童教程第二章第二节--TextBox控件?VB》,感兴趣的同学可以点击进去看看。

相关推荐

玩家点评

条评论

热门下载

热点资讯