打印本文 打印本文  关闭窗口 关闭窗口  
C#中对XML文件的基本操作
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:57:11  文章录入:杜斌  责任编辑:杜斌

正确通知每个需要通知的对象。通过使用事件,提高了程序的模块化程度。要在程序中使用自定义事件,需按以下步骤进行:
 
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;
    }
}

打印本文 打印本文  关闭窗口 关闭窗口