質問するログイン新規登録

回答編集履歴

2

見直しキャンペーン中

2023/07/26 13:19

投稿

TN8001
TN8001

スコア10176

answer CHANGED
@@ -1,77 +1,77 @@
1
- ちょっと試してみたのですが、フォームでやるのはかなり大変そうです。
2
-
3
- `CefSharp.Wpf`では簡単に実現できましたが、`CefSharp.WinForms`のほうは同様にやろうとしてもそもそものイベントが来ない状態でした。
4
-
5
- おそらくこれが答えだと思いますが、私もちょっとわかりません^^;
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)
7
-
8
-
9
- それ以外の方法としては
10
- * WPFに移行
11
- なかなかハードルが高いか?^^;
12
- * `ElementHost`で`CefSharp.Wpf.ChromiumWebBrowser`をホスト
13
- バカバカしいが簡単にテストした限り動いた
14
- * `WebView2`を使う
15
- 何もしないでもズームに対応していた
16
-
17
- このどれかでよければミニマムサンプルは提示可能です。
18
-
19
- ---
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)
25
-
26
- ---
27
-
28
- 追記 `ElementHost`ミニマムサンプル
29
-
30
- [参考ページ](https://dobon.net/vb/dotnet/control/elementhost.html)の通りに参照の追加をします。
31
- NuGetで[CefSharp.Wpf](https://www.nuget.org/packages/CefSharp.Wpf)のほうを入れます。
32
-
33
- ```C#
34
- using System;
35
- using System.Diagnostics;
36
- using System.Windows.Forms;
37
- using System.Windows.Forms.Integration;
38
-
39
- namespace Questions316976
40
- {
41
- public partial class Form1 : Form
42
- {
43
- public Form1()
44
- {
45
- InitializeComponent();
46
- Load += Form1_Load;
47
- }
48
-
49
- private void Form1_Load(object sender, EventArgs e)
50
- {
51
- var browser = new CefSharp.Wpf.ChromiumWebBrowser("www.google.com");
52
- browser.PreviewMouseWheel += Browser_PreviewMouseWheel;
53
-
54
- var elementHost = new ElementHost
55
- {
56
- Child = browser,
57
- Dock = DockStyle.Fill,
58
- };
59
- Controls.Add(elementHost);
60
- }
61
-
62
- private void Browser_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
63
- {
64
- if (sender is CefSharp.Wpf.ChromiumWebBrowser browser)
65
- {
66
- if ((System.Windows.Input.Keyboard.Modifiers & System.Windows.Input.ModifierKeys.Control) == System.Windows.Input.ModifierKeys.Control)
67
- {
68
- if (0 < e.Delta) browser.ZoomInCommand.Execute(null);
69
- else browser.ZoomOutCommand.Execute(null);
70
-
71
- Debug.WriteLine(browser.ZoomLevel);
72
- }
73
- }
74
- }
75
- }
76
- }
1
+ ちょっと試してみたのですが、フォームでやるのはかなり大変そうです。
2
+
3
+ `CefSharp.Wpf`では簡単に実現できましたが、`CefSharp.WinForms`のほうは同様にやろうとしてもそもそものイベントが来ない状態でした。
4
+
5
+ おそらくこれが答えだと思いますが、私もちょっとわかりません^^;
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)
7
+
8
+
9
+ それ以外の方法としては
10
+ * WPFに移行
11
+ なかなかハードルが高いか?^^;
12
+ * `ElementHost`で`CefSharp.Wpf.ChromiumWebBrowser`をホスト
13
+ バカバカしいが簡単にテストした限り動いた
14
+ * `WebView2`を使う
15
+ 何もしないでもズームに対応していた
16
+
17
+ このどれかでよければミニマムサンプルは提示可能です。
18
+
19
+ ---
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)
25
+
26
+ ---
27
+
28
+ 追記 `ElementHost`ミニマムサンプル
29
+
30
+ [参考ページ](https://dobon.net/vb/dotnet/control/elementhost.html)の通りに参照の追加をします。
31
+ NuGetで[CefSharp.Wpf](https://www.nuget.org/packages/CefSharp.Wpf)のほうを入れます。
32
+
33
+ ```cs
34
+ using System;
35
+ using System.Diagnostics;
36
+ using System.Windows.Forms;
37
+ using System.Windows.Forms.Integration;
38
+
39
+ namespace Questions316976
40
+ {
41
+ public partial class Form1 : Form
42
+ {
43
+ public Form1()
44
+ {
45
+ InitializeComponent();
46
+ Load += Form1_Load;
47
+ }
48
+
49
+ private void Form1_Load(object sender, EventArgs e)
50
+ {
51
+ var browser = new CefSharp.Wpf.ChromiumWebBrowser("www.google.com");
52
+ browser.PreviewMouseWheel += Browser_PreviewMouseWheel;
53
+
54
+ var elementHost = new ElementHost
55
+ {
56
+ Child = browser,
57
+ Dock = DockStyle.Fill,
58
+ };
59
+ Controls.Add(elementHost);
60
+ }
61
+
62
+ private void Browser_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
63
+ {
64
+ if (sender is CefSharp.Wpf.ChromiumWebBrowser browser)
65
+ {
66
+ if ((System.Windows.Input.Keyboard.Modifiers & System.Windows.Input.ModifierKeys.Control) == System.Windows.Input.ModifierKeys.Control)
67
+ {
68
+ if (0 < e.Delta) browser.ZoomInCommand.Execute(null);
69
+ else browser.ZoomOutCommand.Execute(null);
70
+
71
+ Debug.WriteLine(browser.ZoomLevel);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
77
  ```

1

`ElementHost`ミニマムサンプル

2021/01/19 11:47

投稿

TN8001
TN8001

スコア10176

answer CHANGED
@@ -14,11 +14,64 @@
14
14
  * `WebView2`を使う
15
15
  何もしないでもズームに対応していた
16
16
 
17
- このどれかでよければミニマム実装は提示可能です。
17
+ このどれかでよければミニマムサンプルは提示可能です。
18
18
 
19
19
  ---
20
20
 
21
21
  参考
22
22
  [WPFコントロールをWindowsフォームに配置する - .NET Tips (VB.NET,C#...)](https://dobon.net/vb/dotnet/control/elementhost.html)
23
23
 
24
- [WebView2 for WinForms アプリの概要 - Microsoft Edge Development | Microsoft Docs](https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms)
24
+ [WebView2 for WinForms アプリの概要 - Microsoft Edge Development | Microsoft Docs](https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms)
25
+
26
+ ---
27
+
28
+ 追記 `ElementHost`ミニマムサンプル
29
+
30
+ [参考ページ](https://dobon.net/vb/dotnet/control/elementhost.html)の通りに参照の追加をします。
31
+ NuGetで[CefSharp.Wpf](https://www.nuget.org/packages/CefSharp.Wpf)のほうを入れます。
32
+
33
+ ```C#
34
+ using System;
35
+ using System.Diagnostics;
36
+ using System.Windows.Forms;
37
+ using System.Windows.Forms.Integration;
38
+
39
+ namespace Questions316976
40
+ {
41
+ public partial class Form1 : Form
42
+ {
43
+ public Form1()
44
+ {
45
+ InitializeComponent();
46
+ Load += Form1_Load;
47
+ }
48
+
49
+ private void Form1_Load(object sender, EventArgs e)
50
+ {
51
+ var browser = new CefSharp.Wpf.ChromiumWebBrowser("www.google.com");
52
+ browser.PreviewMouseWheel += Browser_PreviewMouseWheel;
53
+
54
+ var elementHost = new ElementHost
55
+ {
56
+ Child = browser,
57
+ Dock = DockStyle.Fill,
58
+ };
59
+ Controls.Add(elementHost);
60
+ }
61
+
62
+ private void Browser_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
63
+ {
64
+ if (sender is CefSharp.Wpf.ChromiumWebBrowser browser)
65
+ {
66
+ if ((System.Windows.Input.Keyboard.Modifiers & System.Windows.Input.ModifierKeys.Control) == System.Windows.Input.ModifierKeys.Control)
67
+ {
68
+ if (0 < e.Delta) browser.ZoomInCommand.Execute(null);
69
+ else browser.ZoomOutCommand.Execute(null);
70
+
71
+ Debug.WriteLine(browser.ZoomLevel);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ```