回答編集履歴

2

見直しキャンペーン中

2023/07/26 13:19

投稿

TN8001
TN8001

スコア9855

test CHANGED
@@ -1,153 +1,77 @@
1
1
  ちょっと試してみたのですが、フォームでやるのはかなり大変そうです。
2
-
3
-
4
2
 
5
3
  `CefSharp.Wpf`では簡単に実現できましたが、`CefSharp.WinForms`のほうは同様にやろうとしてもそもそものイベントが来ない状態でした。
6
4
 
7
-
8
-
9
5
  おそらくこれが答えだと思いますが、私もちょっとわかりません^^;
10
-
11
6
  [chromium embedded - Allow user to zoom with mousewheel using the cefsharp browser - Stack Overflow](https://stackoverflow.com/questions/58122685/allow-user-to-zoom-with-mousewheel-using-the-cefsharp-browser)
12
7
 
13
8
 
14
-
15
-
16
-
17
9
  それ以外の方法としては
18
-
19
10
  * WPFに移行
20
-
21
11
  なかなかハードルが高いか?^^;
22
-
23
12
  * `ElementHost`で`CefSharp.Wpf.ChromiumWebBrowser`をホスト
24
-
25
13
  バカバカしいが簡単にテストした限り動いた
26
-
27
14
  * `WebView2`を使う
28
-
29
15
  何もしないでもズームに対応していた
30
-
31
-
32
16
 
33
17
  このどれかでよければミニマムサンプルは提示可能です。
34
18
 
19
+ ---
35
20
 
21
+ 参考
22
+ [WPFコントロールをWindowsフォームに配置する - .NET Tips (VB.NET,C#...)](https://dobon.net/vb/dotnet/control/elementhost.html)
23
+
24
+ [WebView2 for WinForms アプリの概要 - Microsoft Edge Development | Microsoft Docs](https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms)
36
25
 
37
26
  ---
38
27
 
39
-
40
-
41
- 参考
42
-
43
- [WPFコントロールをWindowsフォームに配置する - .NET Tips (VB.NET,C#...)](https://dobon.net/vb/dotnet/control/elementhost.html)
44
-
45
-
46
-
47
- [WebView2 for WinForms アプリの概要 - Microsoft Edge Development | Microsoft Docs](https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms)
48
-
49
-
50
-
51
- ---
52
-
53
-
54
-
55
28
  追記 `ElementHost`ミニマムサンプル
56
29
 
57
-
58
-
59
30
  [参考ページ](https://dobon.net/vb/dotnet/control/elementhost.html)の通りに参照の追加をします。
60
-
61
31
  NuGetで[CefSharp.Wpf](https://www.nuget.org/packages/CefSharp.Wpf)のほうを入れます。
62
32
 
63
-
64
-
65
- ```C#
33
+ ```cs
66
-
67
34
  using System;
68
-
69
35
  using System.Diagnostics;
70
-
71
36
  using System.Windows.Forms;
72
-
73
37
  using System.Windows.Forms.Integration;
74
38
 
75
-
76
-
77
39
  namespace Questions316976
78
-
79
40
  {
80
-
81
41
  public partial class Form1 : Form
82
-
83
42
  {
84
-
85
43
  public Form1()
86
-
87
44
  {
88
-
89
45
  InitializeComponent();
90
-
91
46
  Load += Form1_Load;
92
-
93
47
  }
94
48
 
95
-
96
-
97
49
  private void Form1_Load(object sender, EventArgs e)
98
-
99
50
  {
100
-
101
51
  var browser = new CefSharp.Wpf.ChromiumWebBrowser("www.google.com");
102
-
103
52
  browser.PreviewMouseWheel += Browser_PreviewMouseWheel;
104
53
 
105
-
106
-
107
54
  var elementHost = new ElementHost
108
-
109
55
  {
110
-
111
56
  Child = browser,
112
-
113
57
  Dock = DockStyle.Fill,
114
-
115
58
  };
116
-
117
59
  Controls.Add(elementHost);
118
-
119
60
  }
120
61
 
121
-
122
-
123
62
  private void Browser_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
124
-
125
63
  {
126
-
127
64
  if (sender is CefSharp.Wpf.ChromiumWebBrowser browser)
128
-
129
65
  {
130
-
131
66
  if ((System.Windows.Input.Keyboard.Modifiers & System.Windows.Input.ModifierKeys.Control) == System.Windows.Input.ModifierKeys.Control)
132
-
133
67
  {
134
-
135
68
  if (0 < e.Delta) browser.ZoomInCommand.Execute(null);
136
-
137
69
  else browser.ZoomOutCommand.Execute(null);
138
70
 
139
-
140
-
141
71
  Debug.WriteLine(browser.ZoomLevel);
142
-
143
72
  }
144
-
145
73
  }
146
-
147
74
  }
148
-
149
75
  }
150
-
151
76
  }
152
-
153
77
  ```

1

`ElementHost`ミニマムサンプル

2021/01/19 11:47

投稿

TN8001
TN8001

スコア9855

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- このどれかでよければミニマム実装は提示可能です。
33
+ このどれかでよければミニマムサンプルは提示可能です。
34
34
 
35
35
 
36
36
 
@@ -45,3 +45,109 @@
45
45
 
46
46
 
47
47
  [WebView2 for WinForms アプリの概要 - Microsoft Edge Development | Microsoft Docs](https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms)
48
+
49
+
50
+
51
+ ---
52
+
53
+
54
+
55
+ 追記 `ElementHost`ミニマムサンプル
56
+
57
+
58
+
59
+ [参考ページ](https://dobon.net/vb/dotnet/control/elementhost.html)の通りに参照の追加をします。
60
+
61
+ NuGetで[CefSharp.Wpf](https://www.nuget.org/packages/CefSharp.Wpf)のほうを入れます。
62
+
63
+
64
+
65
+ ```C#
66
+
67
+ using System;
68
+
69
+ using System.Diagnostics;
70
+
71
+ using System.Windows.Forms;
72
+
73
+ using System.Windows.Forms.Integration;
74
+
75
+
76
+
77
+ namespace Questions316976
78
+
79
+ {
80
+
81
+ public partial class Form1 : Form
82
+
83
+ {
84
+
85
+ public Form1()
86
+
87
+ {
88
+
89
+ InitializeComponent();
90
+
91
+ Load += Form1_Load;
92
+
93
+ }
94
+
95
+
96
+
97
+ private void Form1_Load(object sender, EventArgs e)
98
+
99
+ {
100
+
101
+ var browser = new CefSharp.Wpf.ChromiumWebBrowser("www.google.com");
102
+
103
+ browser.PreviewMouseWheel += Browser_PreviewMouseWheel;
104
+
105
+
106
+
107
+ var elementHost = new ElementHost
108
+
109
+ {
110
+
111
+ Child = browser,
112
+
113
+ Dock = DockStyle.Fill,
114
+
115
+ };
116
+
117
+ Controls.Add(elementHost);
118
+
119
+ }
120
+
121
+
122
+
123
+ private void Browser_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
124
+
125
+ {
126
+
127
+ if (sender is CefSharp.Wpf.ChromiumWebBrowser browser)
128
+
129
+ {
130
+
131
+ if ((System.Windows.Input.Keyboard.Modifiers & System.Windows.Input.ModifierKeys.Control) == System.Windows.Input.ModifierKeys.Control)
132
+
133
+ {
134
+
135
+ if (0 < e.Delta) browser.ZoomInCommand.Execute(null);
136
+
137
+ else browser.ZoomOutCommand.Execute(null);
138
+
139
+
140
+
141
+ Debug.WriteLine(browser.ZoomLevel);
142
+
143
+ }
144
+
145
+ }
146
+
147
+ }
148
+
149
+ }
150
+
151
+ }
152
+
153
+ ```