日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#定義事件應(yīng)用

C#定義事件應(yīng)用

目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、新蔡網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

最近公司在上一個(gè)wpf項(xiàng)目,熟悉WPF的同學(xué)都知道,WPF控件中,"用戶控件"這個(gè)概念非常常見,我們也經(jīng)常要做一些用控件來實(shí)現(xiàn)一些相對(duì)比較復(fù)雜的功能,比如:一個(gè)二維的倉庫管理系統(tǒng),倉庫中的貨架可以做成一個(gè)用戶控件,而貨架中的某個(gè)貨架層,貨架層中的某個(gè)貨格,其實(shí)都可以是一個(gè)用戶控件, 我們?cè)诋嬀唧w的某個(gè)貨架的時(shí)候,就可以根據(jù)這個(gè)貨架的實(shí)際情況,從據(jù)庫中讀取相關(guān)的資料,生成具有幾格幾層的二維貨架圖形.由于貨架的通過幾層用戶控件來實(shí)現(xiàn)的,有時(shí)候我們需要在它們"層次"中傳遞消息,比如,我的某個(gè)貨格的信息變動(dòng)了,需要通知整個(gè)貨架,甚至是加載這個(gè)貨架的某個(gè)窗口,這時(shí)候就可以C#定義事件應(yīng)用來完成了,從觸發(fā)事件的某一"層"起,往上拋出事件,父控件接收事件,然后接著往上拋,一直到接收這個(gè)事件的某"層"做出具體的事件處理.
本人才疏學(xué)淺,不當(dāng)之處還望大蝦們多多包含!

首先我們做一個(gè)簡單的用戶控件,模擬在***層觸發(fā)事件的圖形控件:

 
 
 
  1. <UserControlx:ClassUserControlx:Class="WpfApplication5.uc1" 
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4. Height="60"Width="200"> 
  5.  
  6. <RectangleFillRectangleFill="Bisque"> 
  7.  
  8.  
  9.  
  10.  
  11. usingSystem;  
  12. usingSystem.Collections.Generic;  
  13. usingSystem.Linq;  
  14. usingSystem.Text;  
  15. usingSystem.Windows;  
  16. usingSystem.Windows.Controls;  
  17. usingSystem.Windows.Data;  
  18. usingSystem.Windows.Documents;  
  19. usingSystem.Windows.Input;  
  20. usingSystem.Windows.Media;  
  21. usingSystem.Windows.Media.Imaging;  
  22. usingSystem.Windows.Navigation;  
  23. usingSystem.Windows.Shapes;  
  24.  
  25. namespaceWpfApplication5  
  26. {  
  27. /// 
  28. ///Interactionlogicforuc1.xaml  
  29. /// 
  30. publicpartialclassuc1:UserControl  
  31. {  
  32. publicuc1()  
  33. {  
  34. InitializeComponent();  
  35. }  
  36.  
  37. privatestring_name;  
  38.  
  39. publicstringName  
  40. {  
  41. get;  
  42. set;  
  43. }  
  44. }  
  45. publicclassuc1ClickEventArgs  
  46. {  
  47. publicstringName  
  48. {  
  49. get;  
  50. set;  
  51. }  
  52. }  

uc1ClickEventArgs 類是一個(gè)自定義事件參數(shù)類,用來裝這個(gè)控件的一些信息,供它的上級(jí)容器調(diào)用.

再下來也是一個(gè)用戶控件,用來裝多個(gè)上面圖形控件,比如我們可以把它看成是某個(gè)貨格,而下面就是一個(gè)貨架,我采用最基本的循環(huán)來生成幾個(gè)上圖中的用戶控件:

 
 
 
  1. <UserControlx:ClassUserControlx:Class="WpfApplication5.whs_map" 
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4. xmlns:local="clr-namespace:WpfApplication5" 
  5. Height="300"Width="600"Loaded="UserControl_Loaded"> 
  6.  
  7. <Canvasx:NameCanvasx:Name="pa"> 
  8.  
  9.  
  10.  
  11. Code  
  12. usingSystem;  
  13. usingSystem.Collections.Generic;  
  14. usingSystem.Linq;  
  15. usingSystem.Text;  
  16. usingSystem.Windows;  
  17. usingSystem.Windows.Controls;  
  18. usingSystem.Windows.Data;  
  19. usingSystem.Windows.Documents;  
  20. usingSystem.Windows.Input;  
  21. usingSystem.Windows.Media;  
  22. usingSystem.Windows.Media.Imaging;  
  23. usingSystem.Windows.Navigation;  
  24. usingSystem.Windows.Shapes;  
  25.  
  26. namespaceWpfApplication5  
  27. {  
  28. /// 
  29. ///Interactionlogicforwhs_map.xaml  
  30. /// 
  31. ///  
  32.  
  33. publicdelegatevoidtestDelegate(objectsender,uc1ClickEventArgse);  
  34.  
  35.  
  36. publicpartialclasswhs_map:UserControl  
  37. {  
  38. publicwhs_map()  
  39. {  
  40. InitializeComponent();  
  41. }  
  42.  
  43. privateeventtestDelegate_testEvent;  
  44.  
  45. publiceventtestDelegatetestEvent  
  46. {  
  47. add  
  48. {  
  49. _testEvent+=value;  
  50. }  
  51. remove  
  52. {  
  53. _testEvent-=value;  
  54. }  
  55. }  
  56.  
  57. privatevoidUserControl_Loaded(objectsender,RoutedEventArgse)  
  58. {  
  59. intleft=5;  
  60. inttop=1;  
  61.  
  62. for(inti=0;i<5;i++)  
  63. {  
  64. uc1uc=newuc1();  
  65. uc.MouseLeftButtonDown+=newMouseButtonEventHandler(mouseDown);  
  66.  
  67. uc.Name=i.ToString();  
  68. pa.Children.Add(uc);  
  69.  
  70. Canvas.SetTop(uc,top);  
  71. Canvas.SetLeft(uc,left);  
  72.  
  73. left+=205;  
  74. }  
  75. }  
  76.  
  77. publicvoidmouseDown(objectsender,MouseButtonEventArgse)  
  78. {  
  79. if(senderisuc1)  
  80. {  
  81. uc1uc=senderasuc1;  
  82.  
  83. uc1ClickEventArgse2=newuc1ClickEventArgs();  
  84. e2.Name=uc.Name;  
  85. _testEvent(this,e2);  
  86. }  
  87. }  
  88. }  

以上介紹C#定義事件應(yīng)用


分享名稱:C#定義事件應(yīng)用
本文來源:http://www.dlmjj.cn/article/djhiiii.html