`
- 浏览:
378538 次
- 性别:
- 来自:
大连
-
在程序中怎么实现事件。要明白事件,首先要知道什么是委托。在C#中委托允许开发人员
将一个对象中的方法传递给另一个能调用该方法的类的某个对象。比如:可以将类AC中的一个方法ADD[前提是这个方法以被包含在某个委托中了]传递给另一个类WMS。此时类WMS就能调用类AC中的ADD了。当然不管你是以什么方式实现方法的传递了,可以是静态的,也可以是实例化的。。要实现一个委托,需要按照这样的不揍:
A:申明委托对象。注意:参数一定要和你想要包含的方法的参数形式一致。
public delegate void NeweggDelegate(string values)
B:定义方法
class NeweggClass1{
public viod NeweggMethod1(string values){}
public viod NeweggMethod2(string values){}
....}
C:创建一个委托对象此时将这个方法包含在该委托对象中
class NeweggClass2{
public NeweggDelegate createDelegate()
{NeweggClass1 obj1=new NeweggClass1();
NeweggDelegate dele1=new NeweggDelegate(obj1.NeweggMethod1);
NeweggDelegate dele2=new NeweggDelegate(obj1.NeweggMethod2);
NeweggDelegate dele3=dele1+dele2;//属于多点委托了
return dele3;
}
}
D:再调用包含在委托中的方法。
class NeweggClass3
{
public void NeweggCallDelegate(NeweggDelegate de,string values)
{de(values);}
}
class test
{
static void Main(string[] args)
{
NeweggClass2 cls2=new NeweggClass2();
NeweggDelegate delel=cls2.createDelegate();
NeweggClass3 cls3=new NeweggClass3();
cls3.NeweggCallDelegate(delel,"deleagte is used");
}
}
而事件是具有特定参数的委托对象而已。格式象:public delegate void NeweggEventHandler(object sender,NeweggEventArgs e);
sender表示触发该事件的对象,e表示在事件处理函数里可以被使用的一些数据象NeweggEventArgs可以继承自EvenetArgs类。当然有的时候不需要派生自己的类想一些GUI的程序,里面有很多县城的事件使用如:MouseEventArgs。否则必须从EventArgs类派生。
现在举例如下:
using System;
//步骤1:声明委托对象
public delegate void MyHandler1(object sender,MyEventArgs e);
public delegate void MyHandler2(object sender,MyEventArgs e);
//步骤2:创建事件处理函数的方法
class A{
public const string m_id="Class A";
public void OnHandler1(object sender,MyEventArgs e){
Console.WriteLine("I am in OnHandler1 and MyEventArgs is {0}",
e.m_id);
}
public void OnHandler2(object sender,MyEventArgs e){
Console.WriteLine("I am in OnHandler2 and MyEventArgs is {0}",
e.m_id);
}
//步骤3:创建委托对象,并事件处理函数包含在其中同时设置好将要触发事件的对象
public A(B b){
MyHandler1 d1=new MyHandler1(OnHandler1);
MyHandler2 d2=new MyHandler2(OnHandler2);
b.Event1 +=d1;
b.Event2 +=d2;
}
}
//步骤4:通过委托对象(也就是触发事件)来调用被包含的方法
class B{
public event MyHandler1 Event1;
public event MyHandler2 Event2;
public void FireEvent1(MyEventArgs e){
if(Event1 != null){
Event1(this,e);
}
}
public void FireEvent2(MyEventArgs e){
if(Event2 != null){
Event2(this,e);
}
}
}
public class MyEventArgs EventArgs{
public string m_id;
}
public class Driver{
public static void Main(){
B b= new B();
A a= new A(b);
MyEventArgs e1=new MyEventArgs();
MyEventArgs e2=new MyEventArgs();
e1.m_id ="Event args for event 1";
e2.m_id ="Event args for event 2";
b.FireEvent1(e1);
b.FireEvent2(e2);
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在C#编程中,事件处理机制是面向对象设计的一个重要组成部分,它允许对象之间通过事件进行通信,而不必知道彼此的实现细节。本文将深入探讨C#中的事件处理机制,包括预定义事件处理、自定义事件以及事件处理的工作...
事件是指在 C# 中实现事件处理机制的重要组成部分。事件实际上是一种标准化了的委派,用于特制的、专业化的组播委派(多点委派)。 事件的实现过程可以分为以下几个步骤: 1. 声明事件类型:使用 event 关键字声明...
C#事件处理机制是.NET框架中一个核心特性,它为对象间的通信提供了安全、高效的方式。在C#中,事件处理机制主要涉及到委托(Delegate)和事件(Event)两个概念,它们是事件驱动编程的基础。 首先,我们来理解什么...
C#事件处理机制是.NET框架中一个核心特性,它为对象间的通信提供了安全、高效的方式。在C#中,事件处理机制主要涉及到委托(Delegate)和事件(Event)两个概念,它们是事件驱动编程的基础。 首先,我们来理解委托...
本文将详细讲解C#中的委托、事件以及事件处理机制,帮助开发者深入理解这两个概念。 首先,我们来了解**委托(Delegate)**。在C#中,委托是一种类型,它代表了方法的引用。换句话说,委托可以看作是能够存储方法...
本文将详细解析C#处理事件的六个关键步骤,帮助开发者深入理解事件处理机制。 1. **声明事件**: 在C#中,事件通常作为类的私有成员来声明,使用`event`关键字。事件可以是委托类型,它定义了事件触发时调用的方法的...
在C#编程语言中,消息处理机制是一种核心的特性,它涉及到用户界面(UI)的交互和事件驱动编程。理解这一机制对于开发高效、响应性强的应用程序至关重要。本文将深入探讨C#的消息处理机制,包括事件、委托、事件处理...
在C#编程中,事件委托和订阅发布模式是核心特性之一,它们对于构建可扩展、模块化和松耦合的应用程序至关重要。事件是类之间通信的一种机制,它允许一个对象(发布者)通知其他对象(订阅者)某些特定操作的发生,而...
事件分发是C#中的一个重要概念,它允许对象之间进行异步通信,使得一个对象(事件源)可以在特定事件发生时通知其他对象(事件监听者或事件处理者)。在本篇中,我们将深入探讨C#中的事件分发机制,并通过一个名为...
在.NET框架中,C#语言提供了强大的事件处理机制,它是一种用于实现对象间通信的方式,尤其是在用户界面编程中。事件通常与控件交互关联,比如按钮点击、文本框输入等。下面将详细介绍C#事件的概念、特点、如何声明、...
在C#中,事件处理机制强大且灵活,尤其在Windows Forms和WPF等桌面应用程序开发中扮演着关键角色。本文将深入探讨如何在C#中进行事件处理,并结合实例说明其在窗体控件中的应用。 首先,理解事件的基本概念至关重要...
### C#中的事件与委托详解 #### 委托的本质与应用 在C#中,委托是一种引用类型的数据,它可以存储方法的引用。这使得在编程中能够将方法作为参数传递给其他方法,或者在运行时动态调用方法。这种特性在实现事件...
在这个场景下,“C# Remoting 断网事件处理+聊天系统”指的是开发一个聊天应用程序,该程序利用C# Remoting来处理网络连接的断开与恢复,并且具备基本的聊天功能。 首先,让我们深入了解C# Remoting的工作原理。C# ...
但是,这只是动态生成控件的一半,我们还需要添加事件处理机制,例如点击事件。在 C# 中,我们可以使用事件处理函数来处理点击事件,例如 `private void pictureBox_MouseClick(object sender, EventArgs e) { ...
在C#编程中,事件是实现观察者模式的一种机制,它允许对象之间的松耦合通信。事件绑定通常涉及订阅和取消订阅事件。然而,在某些情况下,我们可能需要一次性移除所有事件绑定,例如在对象销毁或重置状态时。本文将...
本文将深入探讨如何在C#中编写自己的事件,包括预定义事件处理机制、自定义事件的定义和实现。 一、C#中的预定义事件处理机制 在C#中,事件通常与委托和EventArgs类一起使用。EventArgs是所有事件数据类的基类,...
在C#中,程序员不需要手动管理内存,因为垃圾收集器会处理所有的内存清理工作。但是,了解C#内存管理机制仍然非常重要,因为它可以帮助程序员编写高质量的代码。 在C#中,数据类型可以分为两种:值数据类型和引用...
以下是关于C#中处理鼠标相关事件的详细说明: 一、鼠标事件类型 1. MouseHover:当鼠标指针停留在控件上方时触发。 2. MouseLeave:当鼠标指针离开控件区域时触发。 3. MouseEnter:当鼠标指针进入控件区域时触发。...
### C#中的委托和事件 #### 一、委托的基础概念 在C#中,委托是一种引用类型的...事件和委托机制极大地简化了事件处理过程,使得程序设计更加灵活和模块化。希望本文能够帮助大家更好地理解和掌握C#中的事件编程。
C# 中的消息机制是通过对消息的封装来实现的,其中消息被封装成了事件。 一、消息概述 消息是通知和命令,在 .NET 框架类库中的 System.Windows.Forms 命名空间中,微软采用面对对象的方式重新定义了 Message。新...