C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: WebView2で設定を変更する方法


(過去ログ 172 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■99260 / inTopicNo.1)  WebView2で設定を変更する方法
  
□投稿者/ HAVE (1回)-(2022/03/01(Tue) 11:46:22)

分類:[.NET 全般] 

2022/03/01(Tue) 12:00:01 編集(投稿者)

開発環境:VistualStudio2017 (開発はVB.netです)

WebView2を使用してサイトを開く簡単なプログラムを作成してどんな感じかテストしているのですが
開いたサイトがなにかしらダウンロードする際とだった場合に
ファイルを保存するかどうかのダイアログが表示されずに、固定の場所にダウンロードされてしまいます
EGDEでが設定→ダウンロード→ダウンロード時の動作を毎回確認するをONにすることで
上記は解決されるのですが、WebView2では上記の設定をどのようにすればよいかがわからずに悩んでいます

大変お手数ですが、ご教授願えませんでしょうか。
引用返信 編集キー/
■99270 / inTopicNo.2)  Re[1]: WebView2で設定を変更する方法
□投稿者/ くま (172回)-(2022/03/02(Wed) 03:04:20)
WebView2開始時にイベントハンドラを設定
https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.web.webview2.core.corewebview2.downloadstarting?view=webview2-dotnet-1.0.1108.44&viewFallbackFrom=webview2-dotnet-1.0.721-prerelease

    AddHandler Me.WebView2.CoreWebView2.DownloadStarting, AddressOf CoreWebView2_DownloadStarting

ダウンロード開始時に
    Private Sub CoreWebView2_DownloadStarting(sender As Object, e As Microsoft.Web.WebView2.Core.CoreWebView2DownloadStartingEventArgs)
	e.ResultFilePath = "ダウンロードファイルのパス"
	DownloadOperation = e.DownloadOperation	'ダウンロード管理クラス
    End Sub

ダウンロード管理クラス
https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.webview2.core.corewebview2downloadoperation?view=webview2-dotnet-1.0.1108.44

    Friend WithEvents DownloadOperation As CoreWebView2DownloadOperation

引用返信 編集キー/
■99290 / inTopicNo.3)  Re[2]: WebView2で設定を変更する方法
□投稿者/ HAVE (3回)-(2022/03/03(Thu) 11:31:23)
くまさん

ありがとうございます。

早速試してみたのですが

フォームのロード時に「AddHandler Me.WebView2.CoreWebView2.DownloadStarting, AddressOf CoreWebView2_DownloadStarting」
を記載したのですがそこで「オブジェクト参照がオブジェクト インスタンスに設定されていません。」のエラーが発生していまい先に進めない状況になってしまいました。

大変お手数ですが、どのようにすれば解決するのかお力添えをいただけませんでしょうか。
引用返信 編集キー/
■99292 / inTopicNo.4)  Re[3]: WebView2で設定を変更する方法
□投稿者/ kiku (246回)-(2022/03/03(Thu) 13:03:48)
No99290 (HAVE さん) に返信
> くまさん
> ありがとうございます。
> 早速試してみたのですが
> フォームのロード時に「AddHandler Me.WebView2.CoreWebView2.DownloadStarting, AddressOf CoreWebView2_DownloadStarting」
> を記載したのですがそこで「オブジェクト参照がオブジェクト インスタンスに設定されていません。」のエラーが発生していまい先に進めない状況になってしまいました。
> 大変お手数ですが、どのようにすれば解決するのかお力添えをいただけませんでしょうか。

エラーが発生する最小限の実行可能なソースを提示しないと
アドバイスできないと思います。

下記ぐぐっただけですが、参考になれば良いですが。
https://blog.systemjp.net/entry/2021/11/10/105203
引用返信 編集キー/
■99293 / inTopicNo.5)  Re[4]: WebView2で設定を変更する方法
□投稿者/ HAVE (4回)-(2022/03/03(Thu) 13:32:49)
2022/03/03(Thu) 13:34:11 編集(投稿者)

kikuさん

ご指摘ありがとうございます

バージョンは
VS:2017
WevViwer2:1.0.1108.44

ソースとしては下記で記載しており。
エラーが発生するのはAddHandlerの行となります。

Private Sub FrmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Try

Dim lcURL As String = String.Empty

'コマンドライン引数からURLを取得し、初期表示。
lcURL = Microsoft.VisualBasic.Command

'URLをセットし表示
Dim web_url As String = lcURL

AddHandler Me.WebView2.CoreWebView2.DownloadStarting, AddressOf CoreWebView2_DownloadStarting

Me.WebView2.Source = New System.Uri(web_url)

Catch ex As Exception
MsgBox(ex.ToString)
End Try

End Sub

お手数ですが記載の誤り等、お教えいただけますでしょうか。
引用返信 編集キー/
■99294 / inTopicNo.6)  Re[3]: WebView2で設定を変更する方法
□投稿者/ 魔界の仮面弁士 (3304回)-(2022/03/03(Thu) 13:42:14)
2022/03/03(Thu) 13:47:06 編集(投稿者)

No99290 (HAVE さん) に返信
> フォームのロード時に「AddHandler Me.WebView2.CoreWebView2.DownloadStarting, AddressOf CoreWebView2_DownloadStarting」
> を記載したのですがそこで「オブジェクト参照がオブジェクト インスタンスに設定されていません。」のエラーが発生していまい

下記構文に変更した際に、メッセージボックスが表示されますか?

If Me.WebView2 Is Nothing Then
  MsgBox("WebView2 なし")
ElseIf Me.WebView2.CoreWebView2 Is Nothing Then
  MsgBox("CoreWebView2 なし")
Else
  AddHandler Me.WebView2.CoreWebView2.DownloadStarting, AddressOf CoreWebView2_DownloadStarting
End If


> 先に進めない状況になってしまいました。
Form の Load 時に記述しているからではないでしょうか?

最近使っていないのでうろ覚えですが、
読み込ませたい Web ページのロードが終了しない限り、
CoreWebView2 は Nothing のままになってしまったように思います。
CoreWebView2 の取得処理を NavigationCompleted イベント内に
移動させてみては如何でしょう。

それと、処理対象の CoreWebView2 インスタンスがひとつだけの場合には、
AddHandler を使うよりも、WithEvents 変数にした方が VB 的には楽だと思います。
複数インタンスの場合は AddHandler の方が良いですけれどね。
引用返信 編集キー/
■99295 / inTopicNo.7)  Re[4]: WebView2で設定を変更する方法
□投稿者/ HAVE (5回)-(2022/03/03(Thu) 14:06:49)
魔界の仮面弁士さん

ご回答ありがとうございます。

>下記構文に変更した際に、メッセージボックスが表示されますか?
 CoreWebView2 なし のメッセージが表示されました。
 
>Form の Load 時に記述しているからではないでしょうか?
 こちらに記載されている方法の通り
 NavigationCompleted の関数内にAddHandler を移動させたところ
 正常に実施できるようになりました。

>読み込ませたい Web ページのロードが終了しない限り、
>CoreWebView2 は Nothing のままになってしまったように思います。
 上記認識がありませんでした。
 皆々様ご確認とご回答ありがとうございました。

 この質問は解決にいたします
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -