CSharp/イベント
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(CSharp, イベント);
*目次 [#x1d18dd2]
#contents
*参考情報 [#f1313f79]
-[[イベント (C# によるプログラミング入門):http://ufcpp.ne...
-[[How to: Implement Interface Events (C#):http://msdn.mi...
-[[VB6開発者向け:C#で始める.NETプログラミング:第7回 オ...
-[[C#のデリゲートとイベントの使い分け:http://tec.jpn.ph/c...
*簡単な例(独自引数のdelegate=非推奨) [#z2ec066b]
-[[../デリゲート]]のサンプルをevent書き換えるとつぎのよう...
#pre{{
delegate void SpeakDelegate(string message);
private void Speak(string message)
{
Debug.WriteLine(message);
}
private void StarSpeak(string message)
{
Debug.WriteLine("★" + message);
}
event SpeakDelegate SpeakEventHandler;
private void event_Clicked(object sender, RoutedE...
{
SpeakEventHandler += Speak;
SpeakEventHandler += StarSpeak;
SpeakEventHandler("Hello World");
}
}}
-実行結果
#pre{{
Hello World
★Hello World
}}
*簡単な例その2(作法に従う) [#y7eff865]
-delegateの作法を.Net推奨の「delegate void EventHandler(o...
#pre{{
public class SpeakEventArgs :EventArgs
{
public string Message {get; set; }
}
public void OnSpeak(object sender, SpeakEventArgs...
{
Debug.WriteLine(e.Message);
}
public void OnStarSpeak(object sender, SpeakEvent...
{
Debug.WriteLine("★" + e.Message);
}
delegate void SpeakHandler(object sender, SpeakEv...
event SpeakHandler TestSpeakHandler;
private void event2_Clicked(object sender, Routed...
{
TestSpeakHandler += OnSpeak;
TestSpeakHandler += OnStarSpeak;
TestSpeakHandler(this, new SpeakEventArgs() {...
}
}}
-実行結果
#pre{{
Hello World
★Hello World
}}
*簡単な例その3(作法に従う&EventHandlerを直接使う) [#y520b...
-「delegate void EventHandler(Object senderm EventArgs e)...
-データの受け渡しが必要ない場合これでOK。
#pre{{
event EventHandler FixSpeakHandler;
public void OnFixSpeak(object sender, EventArgs e)
{
Debug.WriteLine("固定メッセージ");
}
public void OnFixStarSpeak(object sender, EventAr...
{
Debug.WriteLine("★固定メッセージ");
}
private void event3_Clicked(object sender, Routed...
{
FixSpeakHandler += OnFixSpeak;
FixSpeakHandler += OnFixStarSpeak;
FixSpeakHandler(this, new EventArgs());
}
}}
-実行結果
#pre{{
固定メッセージ
★固定メッセージ
}}
*簡単な例その4(EventHandler+Generics) [#y185b8d3]
-[[EventHandler ジェネリック デリゲート (System):http://m...
*Tips [#f6888de2]
**デリゲートとイベントの使い分け [#s79bdc4f]
-[[C#のデリゲートとイベントの使い分け:http://tec.jpn.ph/c...
-デリゲートもイベントもメソッドを登録して呼び出すという点...
-イベントハンドラーのシグニチャが、void EventHandler(obje...
-イベントは暗黙のデリゲートを生成し、 それが外部からいじ...
-普段はイベントを使うようにしておけば問題なさそう。
終了行:
&tag(CSharp, イベント);
*目次 [#x1d18dd2]
#contents
*参考情報 [#f1313f79]
-[[イベント (C# によるプログラミング入門):http://ufcpp.ne...
-[[How to: Implement Interface Events (C#):http://msdn.mi...
-[[VB6開発者向け:C#で始める.NETプログラミング:第7回 オ...
-[[C#のデリゲートとイベントの使い分け:http://tec.jpn.ph/c...
*簡単な例(独自引数のdelegate=非推奨) [#z2ec066b]
-[[../デリゲート]]のサンプルをevent書き換えるとつぎのよう...
#pre{{
delegate void SpeakDelegate(string message);
private void Speak(string message)
{
Debug.WriteLine(message);
}
private void StarSpeak(string message)
{
Debug.WriteLine("★" + message);
}
event SpeakDelegate SpeakEventHandler;
private void event_Clicked(object sender, RoutedE...
{
SpeakEventHandler += Speak;
SpeakEventHandler += StarSpeak;
SpeakEventHandler("Hello World");
}
}}
-実行結果
#pre{{
Hello World
★Hello World
}}
*簡単な例その2(作法に従う) [#y7eff865]
-delegateの作法を.Net推奨の「delegate void EventHandler(o...
#pre{{
public class SpeakEventArgs :EventArgs
{
public string Message {get; set; }
}
public void OnSpeak(object sender, SpeakEventArgs...
{
Debug.WriteLine(e.Message);
}
public void OnStarSpeak(object sender, SpeakEvent...
{
Debug.WriteLine("★" + e.Message);
}
delegate void SpeakHandler(object sender, SpeakEv...
event SpeakHandler TestSpeakHandler;
private void event2_Clicked(object sender, Routed...
{
TestSpeakHandler += OnSpeak;
TestSpeakHandler += OnStarSpeak;
TestSpeakHandler(this, new SpeakEventArgs() {...
}
}}
-実行結果
#pre{{
Hello World
★Hello World
}}
*簡単な例その3(作法に従う&EventHandlerを直接使う) [#y520b...
-「delegate void EventHandler(Object senderm EventArgs e)...
-データの受け渡しが必要ない場合これでOK。
#pre{{
event EventHandler FixSpeakHandler;
public void OnFixSpeak(object sender, EventArgs e)
{
Debug.WriteLine("固定メッセージ");
}
public void OnFixStarSpeak(object sender, EventAr...
{
Debug.WriteLine("★固定メッセージ");
}
private void event3_Clicked(object sender, Routed...
{
FixSpeakHandler += OnFixSpeak;
FixSpeakHandler += OnFixStarSpeak;
FixSpeakHandler(this, new EventArgs());
}
}}
-実行結果
#pre{{
固定メッセージ
★固定メッセージ
}}
*簡単な例その4(EventHandler+Generics) [#y185b8d3]
-[[EventHandler ジェネリック デリゲート (System):http://m...
*Tips [#f6888de2]
**デリゲートとイベントの使い分け [#s79bdc4f]
-[[C#のデリゲートとイベントの使い分け:http://tec.jpn.ph/c...
-デリゲートもイベントもメソッドを登録して呼び出すという点...
-イベントハンドラーのシグニチャが、void EventHandler(obje...
-イベントは暗黙のデリゲートを生成し、 それが外部からいじ...
-普段はイベントを使うようにしておけば問題なさそう。
ページ名: