C#如何定义事件

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

在北京等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、网站制作 网站设计制作按需网站建设,公司网站建设,企业网站建设,品牌网站设计,成都全网营销,成都外贸网站建设公司,北京网站建设费用合理。

C#定义事件应用

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

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

       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  {  /// ///Interactionlogicforuc1.xaml  /// publicpartialclassuc1:UserControl  {  publicuc1()  {  InitializeComponent();  }   privatestring_name;   publicstringName  {  get;  set;  }  }  publicclassuc1ClickEventArgs  {  publicstringName  {  get;  set;  }  }  }

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

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

      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  {  /// ///Interactionlogicforwhs_map.xaml  /// ///   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#如何定义事件”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


分享文章:C#如何定义事件
本文链接:http://cdiso.cn/article/jhhdhe.html

其他资讯