C#中委托与事件
2018-03-20 11:25
190 查看
C#为了类型安全,默认并不支持指针。而是采用委托的方式。
在类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);
}
委托的声明:
属性 修饰符 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);
}
相关文章推荐
- 你可能不知道的陷阱:C#委托和事件的困惑
- C# 中的委托和事件 Powered by 张子阳
- c#事件处理中事件信息EventArgs的使用和类型内部事件委托delegate的调用
- C# 中的委托和事件
- C#事件浅谈(需知委托)
- 详细教程C#中的委托和事件应用(三)
- C#中消息处理机制(事件与委托)
- C#中的委托和事件(续)[转]
- C# 中的委托和事件
- C#中的委托和事件(续)
- c#委托与事件(二)
- C# 如何理解委托事件(一)
- c# 用委托和事件实现不同窗体间的通讯(一)
- c#的委托和事件
- C#中的委托和事件
- C# - 委托与事件
- C#委托及事件委托的初步理解
- 理解C# 中的委托和事件
- C#跨线程修改控件——从MSIL和汇编看Invoke, 多线程, 事件与事件委托