当前位置: 首页 > news >正文

营销型集团网站西安关键字优化哪家好

营销型集团网站,西安关键字优化哪家好,大连网站如何制作,网站产品链接怎么做C# 事件 一、事件二、事件的应用三、事件的自定义声明 一、事件 定义:“a thing that happens, especially something important” / “能够发生的什么事情”角色:使对象或类具备通知能力的成员使用:用于对象或类间的动作协调与信息传递事件…

C# 事件

      • 一、事件
      • 二、事件的应用
      • 三、事件的自定义声明

一、事件

  1. 定义:“a thing that happens, especially something important” / “能够发生的什么事情”
  2. 角色:使对象或类具备通知能力的成员
  3. 使用:用于对象或类间的动作协调与信息传递
  4. 事件的功能=通知+可选的事件参数
  5. 原理:事件模型中的两个“5”
    • “发生->响应”中的5个部分:事件的拥有者,事件的响应者,事件,事件处理器,事件订阅
    • “发生->响应”中的5个动作:
      (1)我有一个事件
      (2)一个人或者一群人关心(即“订阅”)我这个事件
      (3)我的这个事件发生了
      (4)关心这个事件的人会被依次通知到
      (5)被通知的人根据拿到的信息(即“事件数据”、“事件参数”、“通知”)对事件进行响应(即“事件处理”)
    1. 事件的本质是委托字段的一个包装器。

二、事件的应用

事件模型的五个组成部分:

  1. 事件的拥有者(event source,对象)
  2. 事件(event,成员)
  3. 事件的响应者(event subscriber,对象)
  4. 事件处理器(event handler,成员)——本质上是一个回调方法
  5. 事件订阅——把事件处理器和事件关联在一起,本质上是一种以委托类型为基础的“约定”
using System.Timers;
namespace EventExample
{class Program{static void Main(string[] args){System.Timers.Timer timer = new System.Timers.Timer();//1.事件的拥有者timer.Interval = 1000;Boy boy = new Boy();//3.事件的响应者//2.事件:Elapsedtimer.Elapsed += new ElapsedEventHandler( boy.Action);//5.订阅事件timer.Start();Console.ReadLine();           }}class Boy{//4.事件处理器internal void Action(object? sender, ElapsedEventArgs e){Console.WriteLine("Jump");}}}
  • 第一种组合模式:事件的拥有者和事件的响应者是不同的对象
    在这里插入图片描述
namespace EventExample2
{internal static class Program{static void Main(){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();}}
}
  • 第二种组合模式:事件的拥有者和时间的响应者是同一个对象
    在这里插入图片描述
namespace EventExample3
{internal static class Program{static void Main(){MyForm form = new MyForm();form.Click += form.FormClicked;form.ShowDialog();}}class MyForm : Form{internal void FormClicked(object sender, EventArgs e){this.Text = DateTime.Now.ToString();}}}
  • 第三张组合模式:事件的拥有者是事件的响应者的一个字段成员

    在这里插入图片描述

namespace EventExample4
{internal static class Program{static void Main(){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.button.Text = "Say Hello!";this.button.Top = 30;this.button.Click += this.ButtonClicked;this.Controls.Add(this.textBox);this.Controls.Add(this.button);}private void ButtonClicked(object sender, EventArgs e){this.textBox.Text = "Hello world!";}}}

在这里插入图片描述

在这里插入图片描述

订阅的几种写法

 //方法一:直接挂载处理器this.button1.Click += Button1_Click;//方法二:使用委托this.button1.Click += new EventHandler(this.Button1_Click);//方法三:使用委托this.button1.Click += delegate (object? sender, EventArgs e){this.Text = DateTime.Now.ToString();};//简写this.button1.Click +=  (sender, e)=>{this.Text = DateTime.Now.ToString();};

三、事件的自定义声明

完整声明

  • 规定输出类型和输入参数
  • 根据规定声明委托
  • 在事件拥有者类中声明委托字段
  • 根据委托声明事件
  • 订阅事件(把委托和响应事件绑定)
  • 调用委托
    (相对于间接调用了响应事件)
namespace EventExample
{class Program{public static void Main(string[] args){Customer customer = new Customer();Waiter waiter = new Waiter();customer.Order += waiter.Action;customer.Action();customer.PayTheBill();}}public class OrderEventArgs : EventArgs{public string DishName { get; set; }public string Size { get; set; }}//声明委托public delegate void OrderEventHandler(Customer customer, OrderEventArgs e);public class Customer{//声明委托字段private OrderEventHandler? orderEventHandlerOrder;//声明事件public event OrderEventHandler Order{add{this.orderEventHandlerOrder += value;}remove{this.orderEventHandlerOrder -= value;}}public double Bill { get; set; }public void PayTheBill(){Console.WriteLine("I will pay ${0}.", this.Bill);}public void WalkIn(){Console.WriteLine("Walk into the restaurant.");}public void SitDown(){Console.WriteLine("Sit down.");}public void Think(){for (int i = 0; i < 5; i++){Console.WriteLine("Let me think...");Thread.Sleep(1000);}if (this.orderEventHandlerOrder != null){OrderEventArgs e = new OrderEventArgs();e.DishName = "辣椒擂皮蛋";e.Size = "large";this.orderEventHandlerOrder.Invoke(this, e);}}public void Action(){Console.ReadLine();this.WalkIn();this.SitDown();this.Think();}}public class Waiter{internal void Action(Customer customer, OrderEventArgs e){Console.WriteLine("I will serve you the dish -{0}.", e.DishName);double price = 10;switch (e.Size){case "small":price = price * 0.5;break;case "large":price = price * 1.5;break;}customer.Bill += price;}}}

在这里插入图片描述

简略声明

 public class Customer{//简略声明事件public event OrderEventHandler Order;....public void Think(){...if (this.Order != null){...this.Order.Invoke(this, e);}}public void Action(){...this.Think();}}

使用EventHandler声明事件

public delegate void EventHandler(object? sender, EventArgs e);

 public class Customer{//使用EventHandler 声明事件public event EventHandler Order;...}public class Waiter{internal void Action(Object sender, EventArgs e){//强制转换Customer? customer = sender as Customer;OrderEventArgs? orderInfo = e as OrderEventArgs;...}}

注意:

  • 一般事件命名为××EventHandler
  • 事件参数命名为××EventArgs
  • 触发事件命名为On××,访问级别为protected
    修改后的代码
 public class Customer{...this.OnOrder("辣椒擂皮蛋", "large");      }private void OnOrder(string dishName, string size) {if (this.Order != null){OrderEventArgs e = new OrderEventArgs();e.DishName = dishName;e.Size = size;this.Order.Invoke(this, e);}}...}
http://www.khdw.cn/news/7566.html

相关文章:

  • 蒙阴做网站友链交换网站源码
  • 微商做色情网站免费发布推广信息的b2b
  • 如何自己建网站企业网站网络公司网站建设
  • 优惠券网站怎么做的优化的含义是什么
  • 群晖搭建企业网站保定seo建站
  • 网站建设方案书 本案天津网站快速排名提升
  • 武汉自适应h5网站建设广州seo优化外包服务
  • 最后的目的是什么东莞市网络seo推广价格
  • 做机械设计兼职的网站抖音seo系统
  • 网站框架包括哪些百度法务部联系方式
  • 网络培训投诉平台淘宝网站的推广与优化
  • 网站设计公司深百度网站推广一年多少钱
  • html php网站开发广东最新疫情
  • 网站建设费的税率seo积分优化
  • 产品展示栏目在网站中的作用app注册推广拉人
  • 使用WordPress快速建站视频营销外包团队怎么收费
  • 做注册任务赚钱的网站网络营销的特点
  • 企业做网站哪家好开源seo软件
  • 墨刀做网站上下滑动的交互营销的手段和方法
  • 网络舆情软件免费入口官网seo品牌优化百度资源网站推广关键词排名
  • 不建网站如何做淘宝客长沙网站推广服务公司
  • 网站开发的人李海涛百度快速收录seo工具软件
  • 邢台规划局网站建设谷歌排名优化
  • 风雨同舟 网站建设产品软文是什么意思
  • 做代购的网站seo建站优化
  • 成都专业网站建设厂微博营销策略
  • 做门户论坛与网站的区别关键词吉他谱
  • 淘宝上有做网站的吗宁波seo推广定制
  • 提高网站的用户体验度长尾关键词查询工具
  • 专业网站设计哪家好谷歌seo快速排名优化方法