html 手机网站开发,网站制作报价doc,江西星子网,网络营销方式和消费者群体之间的关系【C#语言入门】17. 事件详解#xff08;上#xff09;
一、初步了解事件
定义#xff1a;单词Event#xff0c;译为“事件” 通顺的解释就是**“能够发生的什么事情”**#xff0c;例如#xff0c;“苹果”不能发生#xff0c;但是“公司上市”这件事能发生。在C#中事…【C#语言入门】17. 事件详解上
一、初步了解事件
定义单词Event译为“事件” 通顺的解释就是**“能够发生的什么事情”**例如“苹果”不能发生但是“公司上市”这件事能发生。在C#中事件是类型的成员没有公司就没有公司上市这件事。 担任角色使对象或者类具备通知能力的成员。 中译事件event是一种使对象或者类能够提供通知的成员。原文An event is a member that enables an object or class to provide notifications.“对象O拥有一个事件E”想要表达的思想是当事件E发生的时候O有能力通知别的对象。事件的功能——通知 可选的事件参数即详细信息 使用用于对象或者类间的动作协调与信息传递消息推送原理事件模型event model中的两个“5” “发生→响应”中的五个部分闹钟响了我起床时间到了我下班……隐含着第五个部分“订阅”关系某关心某的状态。“发生→响应”中的五个动作1我有一个事件 →2一个人或者一群人关心我的这个事件 →3我的这个事件发生了 →4关心这个事件的人会被依次通知到 →5被通知到的人根据拿到的事件信息又称“事件数据”、“事件参数”、“通知”对事件进行响应又称“处理事件”。 术语定义 事件的订阅者 事件消息的接受者事件的响应者事件的处理者被事件所通知的对象。事件参数 事件信息事件消息事件数据。 提示 事件多用于桌面、手机等开发的客户端编程因为这些程序经常是用户通过事件来驱动的。各种编程语言对这个机制的实现方法不尽相同。Java语言里面没有事件这种成员也没有委托这种数据类型。Java的事件是使用接口来实现的MVC\MVP\MVVM等模式是事件模式更高级、更有效的“玩法”日常开发的时候使用已有事件的机会比较多自己声明事件的机会比较少所以先学会使用。
二、事件的应用 实例演示 派生继承与扩展extends 事件模型的五个组成部分 事件的拥有者event source对象事件成员event成员事件的响应者event subscriber对象事件处理器event hander成员——本质上是一个回调方法事件订阅——把事件处理器与事件关联在一起本质上是一种以委托类型为基础的“约定”。 组合方式 注意 事件处理器是方法成员挂接事件处理器的时候可以使用委托实例也可以直接使用方法名这是个语法糖事件处理器对事件的订阅不是随意的匹配与否由声明事件时所使用的委托类型来检测事件可以同步调用也可以异步调用
internal class Program
{static void Main(string[] args){Timer timer new Timer();timer.Interval 1000;//单位毫秒Boy boy new Boy();Girl girl new Girl();timer.Elapsed girl.Action;timer.Elapsed boy.Action;//订阅操作,Elapsed是事件成员timer是事件拥有者boy是事件响应者timer.Start();Console.ReadLine();}
}class Boy
{internal void Action(object sender, ElapsedEventArgs e){Console.WriteLine(Jump!);}
}class Girl
{internal void Action(object sender, ElapsedEventArgs e){Console.WriteLine(Sing!);}
}class EventExample1
{static void Main(string[] args){Form form new Form();//事件拥有者Controller controller new Controller(form);//事件响应者form.ShowDialog();}}class Controller
{private Form form;public Controller(Form form){if (form ! null){this.form form;this.form.Click this.FormClicked;//事件成员事件订阅}}private void FormClicked(object sender, EventArgs e){this.form.Text DateTime.Now.ToString();//事件处理器}
}class EventExample1
{static void Main(string[] args){MyForm myForm new MyForm();myForm.Click myForm.FormClicked;myForm.ShowDialog(); }}class MyForm : Form
{internal void FormClicked(object sender, EventArgs e){this.Text DateTime.Now.ToString();}
}class EventExample1
{static void Main(string[] args){MyForm form new MyForm();form.ShowDialog();}}class MyForm : Form
{private TextBox textBox;private Button button;//事件拥有者public MyForm()//事件响应者{this.textBox new TextBox();this.button new Button();this.Controls.Add(this.button);this.Controls.Add(this.textBox);this.button.Click this.ButtonClicked;//事件成员订阅this.button.Text say Hello;this.button.Top 100;this.button.Left 50;}private void ButtonClicked(object sender, EventArgs e){this.textBox.Text Hello,World!!!!!!!!!!!!!!;//事件处理器}
}