C#イベント依頼

7163 ワード

イベント委任イベント概要イベントとは、オブジェクトまたはクラスのステータスが変更されたときに、オブジェクトまたはクラスから送信される情報または通知です.送信情報の対象またはクラスを「イベントソース」と呼び、イベントを処理する方法を「受信者」と呼び、通常、イベントソースが状態変更情報を発行する際に、どのイベント受信者が処理するか分からない.これには、イベントソースと受信者を調整する管理メカニズムが必要であり、C++では関数ポインタによって完成する.C#におけるイベントは、トリガ時に呼び出されるメソッドのタイプの安全なカプセル化イベントの宣言1を提供するために依頼を使用する.依頼public delegate void EventHandler(object sender,System.EventArgs e)を宣言します.2.イベントpublic event EventHandler Changedを宣言します.3.イベントpublic OnChanged(EnventArgs){if(Changed!=null){Changed(this,e)}}を開始4.イベントハンドラpublic MyText_の定義OnChanged(Object sender,EventArgs e) { ... }5.イベントの購読(イベントハンドラをイベントの呼び出しリストに追加)myText.Changed += EventHandler(MyText_OnChanged);次の小さな例では、完全なイベントメカニズムを定義する方法を示します.
C# code
イベント委任イベント概要イベントとは、オブジェクトまたはクラスのステータスが変更されたときに、オブジェクトまたはクラスから送信される情報または通知です.送信情報の対象またはクラスを「イベントソース」と呼び、イベントを処理する方法を「受信者」と呼び、通常、イベントソースが状態変更情報を発行する際に、どのイベント受信者が処理するか分からない.これには、イベントソースと受信者を調整する管理メカニズムが必要であり、C++では関数ポインタによって完成する.C#におけるイベントは、トリガ時に呼び出されるメソッドのタイプの安全なカプセル化イベントの宣言1を提供するために依頼を使用する.依頼public delegate void EventHandler(object sender,System.EventArgs e)を宣言します.2.イベントpublic event EventHandler Changedを宣言します.3.イベントpublic OnChanged(EnventArgs){if(Changed!=null){Changed(this,e)}}を開始4.イベントハンドラpublic MyText_の定義OnChanged(Object sender,EventArgs e) { ... }5.イベントの購読(イベントハンドラをイベントの呼び出しリストに追加)myText.Changed += EventHandler(MyText_OnChanged);次の小さな例では、完全なイベントメカニズムを定義する方法を示します.
C# code
    



    



                ,            。           "   ",            "   ",               , 



               .                    ,C++           . C#                           





     



1.      

public delegate void EventHandler(object sender, System.EventArgs e);



2.      

public event EventHandler Changed;



3.      

public OnChanged(EnventArgs e)

{

 if ( Changed != null)

 {

  Changed(this,e);

 }

}



4.        

public MyText_OnChanged(Object sender,EventArgs e)

{

 ...

}



5.    (                  )



myText.Changed += EventHandler(MyText_OnChanged);



                        :



 C# code 

using System;

using System.Collections.Generic;

using System.Text;



namespace ConsoleApplication1

{

    class Program

    {       

        static void Main(string[] args)

        {             

            MyText myText = new MyText();



            //                   (     )

            myText.Changed += new MyText.ChangedEventHandler(myText_Changed);        

           

            string str = "";

            while (str != "quit")

            {

                Console.WriteLine("please enter a string:");

                str = Console.ReadLine();

                myText.Text = str;

            }

        }



        //  Change       

        private static void myText_Changed(object sender, EventArgs e)

        {

            Console.WriteLine("text has been changed  :{0}
" ,((MyText)sender).Text); } } public class MyText { private string _text = ""; // public delegate void ChangedEventHandler(object sender, EventArgs e); // public event ChangedEventHandler Changed; // Change protected virtual void OnChanged(EventArgs e) { if (this.Changed != null) this.Changed(this, e); } // Text public string Text { get { return this._text; } set { this._text = value; // Change this.OnChanged(new EventArgs()); } } } }