我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#如何定义事件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#如何定义事件

小编给大家分享一下C#如何定义事件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

C#定义事件应用

最近公司在上一个wpf项目,熟悉WPF的同学都知道,WPF控件中,"用户控件"这个概念非常常见,我们也经常要做一些用控件来实现一些相对比较复杂的功能,比如:一个二维的仓库管理系统,仓库中的货架可以做成一个用户控件,而货架中的某个货架层,货架层中的某个货格,其实都可以是一个用户控件, 我们在画具体的某个货架的时候,就可以根据这个货架的实际情况,从据库中读取相关的资料,生成具有几格几层的二维货架图形.由于货架的通过几层用户控件来实现的,有时候我们需要在它们"层次"中传递消息,比如,我的某个货格的信息变动了,需要通知整个货架,甚至是加载这个货架的某个窗口,这时候就可以C#定义事件应用来完成了,从触发事件的某一"层"起,往上抛出事件,父控件接收事件,然后接着往上抛,一直到接收这个事件的某"层"做出具体的事件处理.

首先我们做一个简单的用户控件,模拟在***层触发事件的图形控件:

<UserControlx:ClassUserControlx:Class="WpfApplication5.uc1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="60"Width="200"> <Grid> <RectangleFillRectangleFill="Bisque"></Rectangle>  </Grid> </UserControl>  usingSystem;  usingSystem.Collections.Generic;  usingSystem.Linq;  usingSystem.Text;  usingSystem.Windows;  usingSystem.Windows.Controls;  usingSystem.Windows.Data;  usingSystem.Windows.Documents;  usingSystem.Windows.Input;  usingSystem.Windows.Media;  usingSystem.Windows.Media.Imaging;  usingSystem.Windows.Navigation;  usingSystem.Windows.Shapes;   namespaceWpfApplication5  {  ///<summary> ///Interactionlogicforuc1.xaml  ///</summary> publicpartialclassuc1:UserControl  {  publicuc1()  {  InitializeComponent();  }   privatestring_name;   publicstringName  {  get;  set;  }  }  publicclassuc1ClickEventArgs  {  publicstringName  {  get;  set;  }  }  }

uc1ClickEventArgs 类是一个自定义事件参数类,用来装这个控件的一些信息,供它的上级容器调用.

再下来也是一个用户控件,用来装多个上面图形控件,比如我们可以把它看成是某个货格,而下面就是一个货架,我采用最基本的循环来生成几个上图中的用户控件:

<UserControlx:ClassUserControlx:Class="WpfApplication5.whs_map" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication5" Height="300"Width="600"Loaded="UserControl_Loaded"> <Grid> <Canvasx:NameCanvasx:Name="pa"></Canvas> </Grid> </UserControl>  Code  usingSystem;  usingSystem.Collections.Generic;  usingSystem.Linq;  usingSystem.Text;  usingSystem.Windows;  usingSystem.Windows.Controls;  usingSystem.Windows.Data;  usingSystem.Windows.Documents;  usingSystem.Windows.Input;  usingSystem.Windows.Media;  usingSystem.Windows.Media.Imaging;  usingSystem.Windows.Navigation;  usingSystem.Windows.Shapes;   namespaceWpfApplication5  {  ///<summary> ///Interactionlogicforwhs_map.xaml  ///</summary> ///   publicdelegatevoidtestDelegate(objectsender,uc1ClickEventArgse);    publicpartialclasswhs_map:UserControl  {  publicwhs_map()  {  InitializeComponent();  }   privateeventtestDelegate_testEvent;   publiceventtestDelegatetestEvent  {  add  {  _testEvent+=value;  }  remove  {  _testEvent-=value;  }  }   privatevoidUserControl_Loaded(objectsender,RoutedEventArgse)  {  intleft=5;  inttop=1;   for(inti=0;i<5;i++)  {  uc1uc=newuc1();  uc.MouseLeftButtonDown+=newMouseButtonEventHandler(mouseDown);   uc.Name=i.ToString();  pa.Children.Add(uc);   Canvas.SetTop(uc,top);  Canvas.SetLeft(uc,left);   left+=205;  }  }   publicvoidmouseDown(objectsender,MouseButtonEventArgse)  {  if(senderisuc1)  {  uc1uc=senderasuc1;   uc1ClickEventArgse2=newuc1ClickEventArgs();  e2.Name=uc.Name;  _testEvent(this,e2);  }  }  }  }

看完了这篇文章,相信你对“C#如何定义事件”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#如何定义事件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C#如何定义事件

小编给大家分享一下C#如何定义事件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!C#定义事件应用最近公司在上一个wpf项目,熟悉WPF的同学都知道,WPF控件中,"用户控件"这个概念非常常见,我们也经常要做一些用控件来实现
2023-06-18

C#中如何自定义事件

这篇文章将为大家详细讲解有关C#中如何自定义事件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#自定义事件C#语言中有77个关键字,其中delegate和event专门为C#中事件处理系统
2023-06-17

C#事件怎么自定义

这篇文章主要介绍“C#事件怎么自定义”,在日常操作中,相信很多人在C#事件怎么自定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#事件怎么自定义”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!事件,是C
2023-06-17

C#如何使用delegate类型设计自定义事件

这篇文章主要介绍C#如何使用delegate类型设计自定义事件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用delegate类型设计自定义事件在C#编程中,除了Method和Property,任何Class都可以
2023-06-04

Flex中如何使用自定义事件

Flex中如何使用自定义事件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Flex自定义事件事件是一个非常有用的功能,通常用于信息传递交互大大提高程序编写的灵活性。在高级语言中
2023-06-17

Android如何定义列表点击事件

这篇文章将为大家详细讲解有关Android如何定义列表点击事件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。列表点击事件的定义在Adapter内创建接口,并设置set方法// 声明接口interface
2023-06-22

Java Swing中如何定义键盘事件

这篇文章给大家分享的是有关Java Swing中如何定义键盘事件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在jdk1.2中,分别针对Jcomponent和Text类的对象定制了不同的处理键盘事件的方法:在Jc
2023-06-03

C#怎么为控件添加自定义事件及自定义触发

本文小编为大家详细介绍“C#怎么为控件添加自定义事件及自定义触发”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么为控件添加自定义事件及自定义触发”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。先随便搞个事件
2023-06-30

C#---事件委托EventHandler的定义与使用

在C#中,事件委托是一种特殊的委托类型,用于定义事件的回调函数。它是一种封装了方法的类型,用于在事件发生时通知其他对象进行响应。事件委托的定义和使用步骤如下:1. 定义事件委托类型:在类的外部定义一个事件委托类型,用于封装事件的回调方法。例
2023-09-08

如何理解Vue中组件的自定义事件

本篇文章为大家展示了如何理解Vue中组件的自定义事件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。