偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C#定義事件應用

開發(fā) 后端
本文介紹C#定義事件應用,從據庫中讀取相關的資料,生成具有幾格幾層的二維貨架圖形.由于貨架的通過幾層用戶控件來實現(xiàn)的。

C#定義事件應用

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

首先我們做一個簡單的用戶控件,模擬在***層觸發(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. <Grid> 
  6. <RectangleFillRectangleFill="Bisque"></Rectangle> 
  7.  
  8. </Grid> 
  9. </UserControl> 
  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. ///<summary> 
  28. ///Interactionlogicforuc1.xaml  
  29. ///</summary> 
  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 類是一個自定義事件參數(shù)類,用來裝這個控件的一些信息,供它的上級容器調用.

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

  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. <Grid> 
  7. <Canvasx:NameCanvasx:Name="pa"></Canvas> 
  8. </Grid> 
  9. </UserControl> 
  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. ///<summary> 
  29. ///Interactionlogicforwhs_map.xaml  
  30. ///</summary> 
  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#定義事件應用

【編輯推薦】

  1. C#字符串進行分割
  2. 全面測試C#字符串
  3. C# out和ref傳遞數(shù)組
  4. 淺析C#定義整型數(shù)組
  5. C#數(shù)據庫連接字符串
責任編輯:佚名 來源: 博客園
相關推薦

2009-09-07 04:19:56

C#窗體事件

2009-08-04 09:56:46

C#事件處理自定義事件

2009-09-03 15:46:57

C#自定義事件

2009-08-04 12:56:51

C#自定義事件

2009-08-04 12:40:34

c#自定義事件

2009-08-04 13:53:58

C#委托類C#事件

2009-08-31 16:37:20

C#接口定義

2009-08-04 13:31:35

C#自定義事件

2009-08-28 09:43:05

C#事件

2009-08-12 15:20:21

C#事件處理

2009-08-18 10:48:25

C#事件

2009-08-28 13:12:02

C# Page_Err

2009-08-27 18:02:22

C#事件處理

2009-08-13 10:42:31

C#窗體拖動事件

2009-09-07 15:31:49

C#支持事件

2011-04-25 09:22:44

C#事件

2009-08-28 14:28:25

C# Applicat

2009-09-10 18:18:42

C# Button

2009-08-12 18:28:09

C#事件處理程序

2024-04-28 10:58:00

C#編程窗口關閉事件
點贊
收藏

51CTO技術棧公眾號