您的位置:首页 > 编程语言 > C#

C#中委托与事件

2018-03-20 11:25 190 查看
    C#为了类型安全,默认并不支持指针。而是采用委托的方式。

委托的声明:

    属性 修饰符 delegate 返回类型 委托类型名(参数列表)。其中返回类型和参数列表共同决定了委托类型能关联的一组方法

    public delegate int TDelegate(int a,int b);  //声明委托
 在类ClassDelegate中创建一个静态方法Addpublic class ClassDelegate
{
//静态的处理方法
public static int Add(int a,int b)
{
return a+b;
}
}委托的实例化:
委托类型名和类名一样,都用于创建对象。    委托对象=new 委托类型(关联方法)
   TDelegate de = new TDelegate(ClassDelegate.Add); //实例一个委托

委托的引用:在创建委托对象以后,通过引用该对象可以实现对其关联方法的调用(把委托对象名当做方法名来使用)。private void simpleButton3_Click(object sender, EventArgs e)
{
TDelegate de = new TDelegate(ClassDelegate.Add); //实例一个委托
int s = de(1,1); //调用委托
}

事件:

 类或对象可以通过事件向其他类或对象通知发生的相关事件。
先创建Form1和XtraForm1两个窗体。
在XtraForm1中定义一个事件:public delegate void TDelegate(string s); //声明关于事件的委托 TDelegate为事件类型名称
public partial class XtraForm1 : DevExpress.XtraEditors.XtraForm
{
// public event 事件类型名称 事件名称
public event TDelegate btnEvent; //定义事件
public XtraForm1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
btnEvent("按钮被点击"); //引发事件
}

}Form1中订阅事件:
  带事件的类实例.事件名称+=new 事件类型名称(事件处理方法)private void simpleButton3_Click(object sender, EventArgs e)
{
XtraForm1 TestFm = new XtraForm1();
TestFm.btnEvent+=new TDelegate(TestFm_btnEvent); //订阅事件
TestFm.ShowDialog();
}

//编写事件处理方法 public void(事件处理方法名称)
public void TestFm_btnEvent(string s)
{
MessageBox.Show(s);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: