回答編集履歴

3

修正

2020/10/28 01:28

投稿

退会済みユーザー
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- protected override void OnKeyDown(KeyEventArgs e)
49
+ protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
50
50
 
51
51
  {
52
52
 

2

追記

2020/10/28 01:28

投稿

退会済みユーザー
test CHANGED
@@ -3,3 +3,91 @@
3
3
  WPFコントロール側のKeyDownイベントハンドラ書いて
4
4
 
5
5
  共通のメソッドに流してやるとかしてやらないとダメかもしれません。
6
+
7
+
8
+
9
+ WinFormsとWPFでKeyEventArgsの内容とキーの定数値が微妙に異なるので、
10
+
11
+ その辺りを吸収する必要があるでしょうね。
12
+
13
+
14
+
15
+ ```csharp
16
+
17
+ protected override void OnLoad(EventArgs e)
18
+
19
+ {
20
+
21
+ base.OnLoad(e);
22
+
23
+
24
+
25
+ //WPFのButtonコントロールを作成し、ClickとKeyDownイベント追加
26
+
27
+ var wpfButton = new System.Windows.Controls.Button();
28
+
29
+ wpfButton.Content = "WPF(_P)";
30
+
31
+ wpfButton.Click += WPFButtonClick;
32
+
33
+ wpfButton.KeyDown += WPFKeyDown;
34
+
35
+
36
+
37
+ //ElementHostコントロールを作成し、フォームに追加
38
+
39
+ var elementHost = new ElementHost();
40
+
41
+ elementHost.Child = wpfButton;
42
+
43
+ this.Controls.Add(elementHost);
44
+
45
+ }
46
+
47
+
48
+
49
+ protected override void OnKeyDown(KeyEventArgs e)
50
+
51
+ {
52
+
53
+ base.OnKeyDown(e);
54
+
55
+
56
+
57
+ if (e.KeyCode == Keys.N)
58
+
59
+ {
60
+
61
+ MessageBox.Show("Nが押されました。");
62
+
63
+ }
64
+
65
+ }
66
+
67
+
68
+
69
+ private void WPFKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
70
+
71
+ {
72
+
73
+ if (e.Key == System.Windows.Input.Key.N)
74
+
75
+ {
76
+
77
+ MessageBox.Show("Nが押されました。");
78
+
79
+ }
80
+
81
+ }
82
+
83
+
84
+
85
+ private void WPFButtonClick(object sender, System.Windows.RoutedEventArgs e)
86
+
87
+ {
88
+
89
+ MessageBox.Show("WPFボタンが押されました");
90
+
91
+ }
92
+
93
+ ```

1

少し修正

2020/10/28 01:27

投稿

退会済みユーザー
test CHANGED
@@ -1,5 +1,5 @@
1
1
  恐らくWPF側のコントロールがキーイベントを処理してるので、
2
2
 
3
- WPFコントロール側のイベントハンドラ書いて
3
+ WPFコントロール側のKeyDownイベントハンドラ書いて
4
4
 
5
5
  共通のメソッドに流してやるとかしてやらないとダメかもしれません。