🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

9207閲覧

WebView2コントロールでURLを表示するときに、CoreWebView2がnothingとなり表示できない【VB.NET】

sena1111

総合スコア2

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

1グッド

0クリップ

投稿2021/03/02 05:43

前提・実現したいこと

vb.netで、以下の流れのプログラムを作成しています。
1.WebView2コントロールで指定したURLのページを表示する
2.1.で表示したページのリンクを押すと、新規ウィンドウで開く(新しいフォームにWebView2コントロールを配置するイメージ)

2.で、新規ウィンドウでリンク先を表示するとき、
WebView2.CoreWebView2.navigate([URL])
としているのですが、CoreWebView2がnothingとなり、表示することが出来ません。

どのように解決すればいいのか、ご教示いただきたいです。

該当のソースコード

VB.NET

1Public Class Form1 2 'WebViewコントロールを作成 3 Private WithEvents webView1 As New WebView2() 4 Dim webView2 As WebView2 5 6  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 7 8 webView1.Dock = DockStyle.Fill 9 webView1.Name = "webView1" 10 Me.WindowState = FormWindowState.Maximized 'フォームの最大化 11 12 ' コントロールとしてフォーム上に追加 13 Controls.Add(webView1) 14 15 '初期ページ表示 16 webView1.CoreWebView2.navigate([URL]) 17 18 '新規ウィンドウ表示イベントを設定 19 AddHandler webView1.CoreWebView2.NewWindowRequested, AddressOf webView_NewWindow 20 21  End Sub 22 23  Private Sub webView_NewWindow(sender As Object, e As CoreWebView2NewWindowRequestedEventArgs) 24 25 'Form2 26 Dim f2 As New Form2 'Form2クラスのインスタンス作成 27 f2.Show() 28 29 'WebView 30 webView2 = New WebView2 31 InitializeAsync2() 32 webView2.Dock = DockStyle.Fill 33 webView2.Name = "webView2" 34 webView2.Parent = f2 35 36 'txtを表示 37 Dim txt As String = CType(sender, CoreWebView2).Source 38 If webView2.CoreWebView2 IsNot Nothing Then 39 If Not txt = Nothing Then 40 webView2.CoreWebView2.Navigate(txt) 41 End If 42 Else 43 MsgBox("webView2.CoreWebView2 is nothing") '★ここに入ってしまう★ 44 End If 45 46  End Sub 47 48  Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load 49 50 InitializeAsync() 51 52  End Sub 53 54  Private Async Sub InitializeAsync() 55 56 Await webView1.EnsureCoreWebView2Async(Nothing) 57 58  End Sub 59 60  Private Async Sub InitializeAsync2() 61 62 Await webView2.EnsureCoreWebView2Async(Nothing) 63 64  End Sub 65End Class 66 67 68 69
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SourceUriを設定できませんか?そうすれば特に気にする必要はないのですが。

Navigateしたいのであれば、EnsureCoreWebView2Asyncを待機する必要があります。
WebView2.EnsureCoreWebView2Async(CoreWebView2Environment) Method (Microsoft.Web.WebView2.WinForms) | Microsoft Docs

InitializeAsync2メソッドではAwaitしていますが、使用側でInitializeAsync2()Awaitしていないので初期化を待っていません。

VBNET

1Private Async Sub webView_NewWindow( 2 3 Await InitializeAsync2()

のようになっていなければなりません。

投稿2021/03/04 08:46

編集2023/07/26 14:42
TN8001

総合スコア9855

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sena1111

2021/03/05 00:29

TN8001さん ご回答ありがとうございます。 >SourceにUriを設定できませんか? このやり方で、ページを表示することが出来ました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問