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

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

詳細はこちら
VB.NET

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

Q&A

解決済

1回答

3152閲覧

【vb.net】【タブ型ブラウザ作成】リンクを押したときに新規タブで開くには

sena1111

総合スコア2

VB.NET

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

0グッド

0クリップ

投稿2021/02/22 06:44

前提・実現したいこと

vb.netでタブ型のブラウザを作成しています。
具体的に実現したいことは以下のとおりです。
1.指定したURLに該当するページを、formの中で表示する
2.ページ内でリンクをクリックしたとき、新規タブで表示する

※現時点では、1つのタブを追加するところを目標としています。
最終的には、動的に複数のタブを追加するところを目標としています。

発生している問題・エラーメッセージ

現状、1.はクリアしていますが、2.で躓いています。
具体的には、リンクをクリックしたとき、新規タブで表示することはできていますが、
遷移元のページ(タブ)の内容が消えてしまいます。

遷移元のページも表示させるには、どうすればよいでしょうか。

該当のソースコード

vb.net

1Public Class Form1 2 Private WithEvents webBrowser1 As New WebBrowser() 3 Dim TabCtrl As TabControl 4 Dim TabPages() As TabPage 5 6'1.指定したURLに該当するページを表示 7Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click 8 9 webBrowser1 = New WebBrowser '新しくWebBrowserを作成 10 11 TabCtrl = New TabControl '新しくTabControlを作成 12 TabCtrl.Parent = Me '作成したTabControlをフォームに配置 13 TabCtrl.Dock = DockStyle.Fill 'TabControlをフォーム全体にドッキング 14 15 ReDim TabPages(0) '新しくTabPageコントロールを宣言 16 TabPages(0) = New TabPage 17 18 TabCtrl.Controls.Add(TabPages(0)) '作成したTabPageをTabControlに配置 19 20 webBrowser1.Parent = TabPages(0) '作成したWebBrowserコントロールを、作成したTabPageへ配置 21 22 webBrowser1.Dock = DockStyle.Fill 23 webBrowser1.Name = "webBrowser1" 24 Me.WindowState = FormWindowState.Maximized 'フォームの最大化 25 26     webBrowser1.navigate("[指定するURL]") '該当ページを表示 27End Sub 28 29'2.リンクが押されたとき、新規タブで開く 30Sub webBrowser1_NewWindow(sender As Object, e As CancelEventArgs) Handles webBrowser1.NewWindow 31 32 Dim webBrowser2 As New WebBrowser() 33 webBrowser2 = CType(sender, WebBrowser) 34 Dim txt As String = webBrowser2.StatusText 35 36 ReDim Preserve TabPages(1) '新しくTabPageコントロールを宣言 37 TabPages(1) = New TabPage 38 39 TabCtrl.Controls.Add(TabPages(1)) '作成したTabPageをTabControlに配置 40 TabCtrl.SelectedIndex = 1 41 42 webBrowser2.Dock = DockStyle.Fill 'WebBorwserコントロールをタブページ全体にドッキング 43 webBrowser2.Parent = TabPages(1) '作成したWebBrowserコントロールを、作成したTabPageへ配置 44 45 If Not txt = Nothing Then 46 webBrowser2.Navigate(txt) 47 End If 48 e.Cancel = True 49End Sub 50End Class

試したこと

TabPage、WebBrowserを配列にする/個別の変数にする

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

ベストアンサー

webBrowser1_NewWindow内で

Dim webBrowser2 As New WebBrowser()

した後に、

webBrowser2 = CType(sender, WebBrowser)

して、操作するコントロールを既存(多分タブ1の)ブラウザコントロールに変更しているからでは。

投稿2021/02/22 09:46

draq

総合スコア2577

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

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

sena1111

2021/02/24 00:38

draqさん 拙い質問でしたが、ご回答頂きありがとうございます。 ご指摘いただきました内容を踏まえ、 操作するブラウザコントロールを変更しないよう修正したところ、理想とした動作となりました。 具体的には、以下の通り修正しました。 ------------------------------------------------------------- (変更前) webBrowser2 = CType(sender, WebBrowser) Dim txt As String = webBrowser2.StatusText (変更後) 'webBrowser2 = CType(sender, WebBrowser) コメントアウト Dim txt As String = CType(sender, WebBrowser).StatusText ------------------------------------------------------------- ありがとうございました。 vb.netの初心者のため、今後も不明点が出てくるかと存じますので 今後とも宜しくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問