.NET框架中引入委托和事件来代替原来在C/C++中所使用的函数回调,委托是C#中的一种引用类型,类似于C/C++中的函数指针,与函数指针不同的是,委托面向对象,类型安全的,而且委托可以引用静态方法和实例方法,而函数指针只能引用静态方法,委托主要用于.NET框架下的事件处理程序和回调函数,一个委托可以看作是一个特殊的类,可以与常规的类放在相同的位置。与其他函数一样,必须先定义,再实例化。委托派生于System.Delegate,不过委托的定义和常规类的处理定义方法不太一样,它是通过关键字delegate来定义的如:
public delegate void IssueDataChangedEventHandler(object sender, EventArgs e);
确定委托是一个事件的话还要用event来声明,如:
public virtual event IssueDataChangedEventHandler IssueDataChanged;
如何在程序中进行触发?
m_subject.IssueDataChanged += new IssueSubject.IssueDataChangedEventHandler(this.Subject_IssueDataChanged);
使用:private void issueList_SelectionChanged(DataRowView dr)
{
if (dr == null)
{
m_selectedID = 0;
}
else
{
m_selectedID = (int)dr["IssueID"];
}
m_selectedRow = dr;
m_subject.CurrentItem = dr;
}
public delegate void IssueDataChangedEventHandler(object sender, EventArgs e);
确定委托是一个事件的话还要用event来声明,如:
public virtual event IssueDataChangedEventHandler IssueDataChanged;
如何在程序中进行触发?
m_subject.IssueDataChanged += new IssueSubject.IssueDataChangedEventHandler(this.Subject_IssueDataChanged);
使用:private void issueList_SelectionChanged(DataRowView dr)
{
if (dr == null)
{
m_selectedID = 0;
}
else
{
m_selectedID = (int)dr["IssueID"];
}
m_selectedRow = dr;
m_subject.CurrentItem = dr;
}