91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何定義事件

發布時間:2021-12-01 11:48:22 來源:億速云 閱讀:324 作者:小新 欄目:編程語言

小編給大家分享一下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#如何定義事件”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特前旗| 兰溪市| 乐清市| 武安市| 广昌县| 平顶山市| 黔江区| 精河县| 高邑县| 托里县| 平昌县| 项城市| 启东市| 昌平区| 香格里拉县| 大邑县| 东乌珠穆沁旗| 新沂市| 抚顺市| 丹棱县| 肃宁县| 肇庆市| 荣昌县| 班戈县| 聂荣县| 商南县| 铁力市| 荆门市| 青川县| 两当县| 灵台县| 定兴县| 台安县| 泽普县| 祁连县| 昌吉市| 饶河县| 开化县| 翁牛特旗| 鞍山市| 个旧市|