c# 用委託和事件實現不同窗體間的通訊(一)
C# 中的“事件”是當物件滿足一定條件,發生某些事情時,類向該類的客戶提供通知的一種方法。使用事件,擁有該事件的物件不必知道需要通知誰,一旦滿足了某個條件,將自動呼叫該事件,正確通知每個需要通知的物件。通過使用事件,提高了程式的模組化程度。
例子:通過form1開啟form2,改變form2上combox1控制元件選擇的值,然後將 combox1的text值返回到form1中的TextBox1的text上
在Form2中
public partial class Form2 : Form
{
public delegate void GetSelectionData(object
public event GetSelectionData getData;//宣告事件
public Form2()
{
InitializeComponent();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (getData != null)
{
SelectionChangedEventArgs E = new SelectionChangedEventArgs(comboBox1.Text);
getData(this
}
}
}
//由於本示例程式需在事件中傳遞資料,因此定義了EventArgs的派生類SelectionChangedEventArgs。
public class SelectionChangedEventArgs : EventArgs
{
private string m_selection;
//本屬性用於傳遞事件資料
public string Selection
{
get { return m_selection; }
}
//委託型別定義傳遞給處理該事件的方法的一組引數。多個事件可共享相同的委託型別,因此僅當尚未宣告任何合適的委託型別時才需要執行該步驟。
public SelectionChangedEventArgs(string
{
m_selection = selection;
}
}
在Form1中:
private void button2_Click(object sender, EventArgs e)
{
//為了開始接收事件呼叫,客戶程式碼先建立事件型別的委託,該委託引用應從事件呼叫的方法。然後它使用+= 將該委託寫到事件可能連線到的其他任何委託上
m_frm2 = new Form2();
m_frm2.getData += new Form2.GetSelectionData(m_frm2_SelectionChanged); //與事件掛鉤
m_frm2.ShowDialog();
}
private void m_frm2_SelectionChanged(object sender,SelectionChangedEventArgs e)
{
//獲取事件傳遞過來的資料
textBox1.Text =e.Selection;
}
相關推薦
c# 用委託和事件實現不同窗體間的通訊(一)
C# 中的“事件”是當物件滿足一定條件,發生某些事情時,類向該類的客戶提供通知的一種方法。使用事件,擁有該事件的物件不必知道需要通知誰,一旦滿足了某個條件,將自動呼叫該事件,正確通知每個需要通知的物件。通過使用事件,提高了程式的模組化程度。 例子:通過form1開啟f
C#使用委託和事件實現釋出訂閱者模式
事件是C#中的高階概念,和js中的滑鼠點選$("tag").click,懸停$("tag").hover或css元素樣式的改變(onChanged)等事件,當事件觸發才執行我們所委託的方法。 步驟: 1、建立一個委託; 2、將建立的委託與特定事件關聯; 3、編寫C#事件處理程式; 4、利用編
C#裡的委託和事件實現Observer(觀察者)
一、委託的簡介 1、委託的宣告: delegate HandlerName ([parameters]) 例如: public delegate void PrintHandler(string
C#的委託和事件
委託 委託相當於C++的函式指標或者函式的引用。 using System; public class FunClass { public void func1() { Console.WriteLine ("func 1"); }
C#中委託和事件的區別
大致來說,委託是一個類,該類內部維護著一個欄位,指向一個方法。事件可以被看作一個委託型別的變數,通過事件註冊、取消多個委託或方法。本篇分別通過委託和事件執行多個方法,從中體會兩者的區別。 □ 通過委託執行方法 class Program { st
C# 的 委託和事件
由於本人都是自學的程式設計,哪裡不對的望見諒和指出。謝謝! 一、委託 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Th
Asynchronous Programming with async and await (C#)用async和await實現非同步程式設計
You can avoid performance bottlenecks and enhance the overall responsiveness of your application by using asynchronous programming. Howe
c++用cin和getline實現輸入回車結束輸入
今天做一道測試題遇到了一個麻煩,我想要先讀入一個字串,再讀入一個整數,迴圈往復,直到字串是空,也就是說回車鍵結束迴圈。 最開始的想法是: string s;int d; while(cin>>s){ cin>>d; // prece
C 之委託和事件
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
華為用hybrid 技術;實現不同vlan間交換機互相通信
col lan 分享 ima title watermark alt 結果 times 實驗任務:1. vlan10和vlan5 都能和vlan50互通;2. vlan10和vlan5 之間不能通!3. 如下華為拓撲圖:實驗步驟:1. 進交換機sw12創建 vlan 5 v
C#——基於委託與事件的多執行緒通訊(同樣適用於非UI執行緒間通訊)
在研究c# 執行緒之間通訊時,發現傳統的方法大概有三種 ①全域性變數,由於同一程序下的多個程序之間共享資料空間,所以使用全域性變數是最簡單的方法,但要記住使用volatile進行限制。 ②執行緒之間傳送訊息(這個隨後文章中會討論到)。 ③CEvent為MFC中的一
JAVA wait()和notifyAll()實現線程間通訊
all row cache string runnable private sync ide cached 本例是閱讀Think in Java中相應章節後,自己實際寫了一下自己的實現 import java.util.concurrent.ExecutorService
Java利用wait和notify實現執行緒間通訊
Java的Object類提供了wait和notify方法用於實現執行緒間通訊(因為所有的java類都繼承了Object類,所以所有的java類都有這兩個方法)。這兩個方法在Object類中籤名如下: pu
三層交換機實現不同vlan間通訊
1.器材 二層交換機為神州數碼DCS-3950,路由交換機為神州數碼DCRS-5650,路由器為神州數碼DCR-2600。 2.原理 2.1交換機的帶外管理和帶內管理 交換機的管理方式可以分為帶內管理和帶外管理兩種管理模式。所謂帶內管理,是指管理控制資訊與資料業務資訊通過
一起talk C栗子吧(第九十五回:C語言例項--使用共享記憶體進行程序間通訊一)
各位看官們,大家好,上一回中咱們說的是SystemV IPC結構概述的例子,這一回咱們說的例子是:使用共享記憶體進行程序間通訊。閒話休提,言歸正轉。讓我們一起talk C栗子吧! 共享記憶體是SystemV IPC結構這種抽象概念的一種具體物件。就和它的
C#委託和事件(WPF實現關閉子視窗B時觸發A視窗事件)
遇到一個問題,子視窗關閉時,主視窗如何知道子視窗關閉了,並執行相應的處理事件。為了解決這個問題查閱資料後可以用委託和事件來完成。 一、委託 1、委託: 委託是安全封裝方法的型別,類似於 C 和
分分鐘用上C#中的委託和事件
每一個初學C#的程式猿,在剛剛碰到委託和事件的概念時,估計都是望而卻步,茫然摸不到頭腦的。百度一搜,關於概念介紹的文章大把大把的,當然也不乏深入淺出的好文章。可看完這些文章,大多數新手,估計也只是信心滿滿的覺得自己看懂了,一旦要在自己的程式中用上委託和事件,就傻眼了,根本不知道什麼情況下該用,也不知
詳解C#委託和事件(二)
一、當我們使用關鍵字delegate宣告一個自定義委託型別時,實際上是聲明瞭一個該名稱的類型別,繼承自抽象類System.MulticastDelegate,還包含例項方法Invoke、BeginInvoke、EndInvoke: public delegate void MyDelegate
C# 委託和事件的區別
主要區別:1.事件在類外繫結事件只能用“+=”(“-=”解綁),不能使用‘=’繫結;如果在類內部繫結事件可以用‘=’; 2.委託在類內類外都可以用"+="、"-="、"="; 3.事件的呼叫(執行)只能在類內呼叫;委託(公有)在類內類外都可以呼叫 例子: cl
C#中的委託和事件---通俗易懂
每一個初學C#的程式猿,在剛剛碰到委託和事件的概念時,估計都是望而卻步,茫然摸不到頭腦的。百度一搜,關於概念介紹的文章大把大把的,當然也不乏深入淺出的好文章。可看完這些文章,大多數新手,估計也只是信心滿滿的覺得自己看懂了,一旦要在自己的程式中用上委託和事件,就傻眼了,根本不知