|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
C# 中的“事件”是当对象满意一定条件,发生某些事情时,类向该类的客户提供通知的一种方式。使用事件,拥有该事件的对象不必知道需要通知谁,一旦满意了某个条件,将自动调用该事件,准确通知每个需要通知的对象。通过使用事件,提高了程序的模块化程度。 要在程序中使用自定义事件,需按以下步骤进行: 1、声明事件 要在类内声明事件,首先必须声明该事件的委托类型: public delegate void SelectionChangedEventHandler(object sender, SelectionChangedEventArgs e); 说明:由于本示例程序需在事件中传递数据,因此定义了EventArgs的派生类SelectionChangedEventArgs。 public class SelectionChangedEventArgs : EventArgs { private string m_selection; //本属性用于传递事件数据 public string Selection { get { return m_selection; } } public SelectionChangedEventArgs(string selection) { m_selection = selection; } } 委托类型定义传递给处理该事件的方式的一组参数。多个事件可共享一样的委托类型,因此仅当尚未声明任何合适的委托类型时才需要执行该步骤。 接下来,声明事件本身: public event SelectionChangedEventHandler SelectionChanged; 2、调用事件 假如没有任何客户将委托与该事件挂钩,该字段将为空;否则该字段引用应在调用该事件时调用的委托。因此,调用事件时通常先检查是否为空,然后再调用事件。 public class Form2 : System.Windows.Forms.Form { ... ... public event SelectionChangedEventHandler SelectionChanged; ... ... private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e) { if (SelectionChanged != null) { SelectionChangedEventArgs E = new SelectionChangedEventArgs(comboBox1.Text); SelectionChanged(this, E); } } } 3、与事件挂钩 为了开始接收事件调用,客户代码先创建事件类型的委托,该委托引用应从事件调用的方式。然后它使用 += 将该委托写到事件可能连接到的其他任何委托上。 public class Form1 : System.Windows.Forms.Form { ... ... private Form2 m_frm2; ... ... public Form1() { ... ... m_frm2 = new Form2(); //与事件挂钩 m_frm2.SelectionChanged += new SelectionChangedEventHandler(frm2_SelectionChanged); } ... ... private void button1_Click(object sender, System.EventArgs e) { m_frm2.ShowDialog(); } private void frm2_SelectionChanged(object sender, SelectionChangedEventArgs e) { //获取事件传递过来的数据 textBox1.Text = e.Selection; } } 本示例效果如下图所示: ![]() 返回类别: 教程 上一教程: 这是asp.net的第二个应用(四) 下一教程: 用VB.NET打造NameSpace(转贴) 您可以阅读与"利用自定义事件实现不同窗体间的通讯 -- C#篇"相关的教程: · 关于自定义事件的一点体会 · 在.net中轻松把握Windows窗体间的数据交互 · 在.NET中实现彩色光标和自定义光标 · 如何在asp+ 中使用自定义的pagelet · 利用反射,实现动态调用winform窗体!! |
| 快精灵印艺坊 版权所有 |
首页 |
||