回答編集履歴

2

追記

2019/02/10 06:10

投稿

Zuishin
Zuishin

スコア28656

test CHANGED
@@ -51,3 +51,37 @@
51
51
  }
52
52
 
53
53
  ```
54
+
55
+
56
+
57
+ # 追記
58
+
59
+
60
+
61
+ ボタンを二つ貼り付け、button2 のイベントハンドラを次のように書き換えてください。
62
+
63
+ そして button2 を押した後、button1 を押すとメッセージが表示されます。
64
+
65
+
66
+
67
+ ```C#
68
+
69
+ private async void button2_Click(object sender, EventArgs e)
70
+
71
+ {
72
+
73
+ var task = Observable
74
+
75
+ .FromEventPattern<EventArgs>(button1, nameof(Button.Click))
76
+
77
+ .Take(1)
78
+
79
+ .ToTask();
80
+
81
+ await task;
82
+
83
+ MessageBox.Show("button1 が押されました");
84
+
85
+ }
86
+
87
+ ```

1

追記

2019/02/10 06:10

投稿

Zuishin
Zuishin

スコア28656

test CHANGED
@@ -3,3 +3,51 @@
3
3
 
4
4
 
5
5
  [Reactive Extensions](https://qiita.com/acple@github/items/6cfee916f09632037a6e) を使うと簡単です。これを使うには NuGet で System.Reactive をインストールする必要があります。
6
+
7
+
8
+
9
+ # 追記
10
+
11
+
12
+
13
+ 例えば Reactive Extensions を使ってボタンのクリックイベントを受け取るには次のようにします。
14
+
15
+
16
+
17
+ ```C#
18
+
19
+ using System;
20
+
21
+ using System.Reactive.Linq;
22
+
23
+ using System.Windows.Forms;
24
+
25
+
26
+
27
+ namespace WindowsFormsApp1
28
+
29
+ {
30
+
31
+ public partial class Form1 : Form
32
+
33
+ {
34
+
35
+ public Form1()
36
+
37
+ {
38
+
39
+ InitializeComponent();
40
+
41
+ Observable
42
+
43
+ .FromEventPattern<EventArgs>(button1, nameof(Button.Click))
44
+
45
+ .Subscribe(_ => MessageBox.Show("クリックされた!"));
46
+
47
+ }
48
+
49
+ }
50
+
51
+ }
52
+
53
+ ```