下面先通过一个案例来说明事件的声明、赋值、触发过程。
一、窗体创建及事件编写
1、父窗体相关
-
namespace TestEvent
-
{
-
public partial class MainForm : Form
-
{
-
public bool MIsSonFormVisible = false;
-
private SonForm mSonForm;
-
public MainForm()
-
{
-
InitializeComponent();
-
}
-
private void button1_Click(object sender, EventArgs e)
-
{
-
if (!this.MIsSonFormVisible)
-
{
-
this.mSonForm = new SonForm(this);
-
this.mSonForm.Show();
-
this.MIsSonFormVisible = true;
-
}
-
}
-
private void MainForm_Load(object sender, EventArgs e)
-
{
-
SonForm.SonEvent += new SonForm.DSonFormCmd(parseSonFormCmd);
-
}
-
private void parseSonFormCmd(bool isOk,string text)
-
{
-
if (isOk)
-
{
-
this.textBox1.Text = "Son Says: " + text;
-
}
-
}
-
}
-
}
2、子窗体相关
-
namespace TestEvent
-
{
-
public partial class SonForm : Form
-
{
-
public delegate void DSonFormCmd(bool isOk,string text);
-
static public event DSonFormCmd SonEvent;
-
public void OnSonEvent(bool isOk)
-
{
-
if (SonEvent != null)
-
{
-
SonEvent(isOk,this.textBox1.Text);
-
}
-
}
-
private Form mFather;
-
public SonForm(Form father)
-
{
-
InitializeComponent();
-
this.mFather = father;
-
}
-
private void button1_Click(object sender, EventArgs e)
-
{
-
this.OnSonEvent(true);
-
}
-
private void SonForm_FormClosing(object sender, FormClosingEventArgs e)
-
{
-
((MainForm)this.mFather).MIsSonFormVisible = false;
-
}
-
}
-
}
二、关键语法说明
首先明确,事件常作为一个类的成员出现。
事件的声明及使用主要分为几个关键部分:声明事件委托、声明事件、添加事件触发方法、编写事件响应方法。
1、事件声明
(1)声明事件使用的委托;
-
public delegate void DSonFormCmd(bool isOk,string text);
(2)声明一个事件,并指明它使用的委托的类型。
-
static public event DSonFormCmd SonEvent;
(3)编写事件触发方法
-
public void OnSonEvent(bool isOk)
-
{
-
if (SonEvent != null)
-
{
-
SonEvent(isOk,this.textBox1.Text);
-
}
-
}
注意这里SonEvent(isOk,this.textBox1.Text);的值将被传到事件委托处理方法中。一执行OnSonEvent()则马上触发事件。
2、在其它类中使用事件
使用事件首先要向其注册事件响应方法。然后编写好响应方法即可。
-
SonForm.SonEvent += new SonForm.DSonFormCmd(parseSonFormCmd);
-
private void parseSonFormCmd(bool isOk,string text)
-
{
-
if (isOk)
-
{
-
this.textBox1.Text = "Son Says: " + text;
-
}
-
}
再探总结:
事件的声明及使用主要是主要按照这几个步骤进行,正常使用是OK的。待再作深探windows的事件机制。
参考博客:
http://www.cnblogs.com/huomm/archive/2007/12/04/982869.html
阅读(2049) | 评论(0) | 转发(0) |