vb.net加webview2以及tabcontrol打造一个简易浏览器3

webview2的说明或者说是代码的说明

    Public webViewList As New List(Of WebView2)() '打开的浏览器放到list中
    Private ReadOnly linkList As New List(Of LinkInfo)() '这里是链接的list
    Private ReadOnly blackLinkList As New List(Of LinkInfo)() 
    Private ReadOnly LinksFilePath As String = Path.Combine(Application.StartupPath, "links.txt")
    Private ReadOnly BlackLinksFilePath As String = Path.Combine(Application.StartupPath, "black_links.txt")
    Private ReadOnly DownloadFolderPath As String = Path.Combine(Application.StartupPath, "Download")
    Private WithEvents ToolStrip As ToolStrip 
    Dim startPoint As Point 
    Dim endPoint As Point
    Dim selecting As Boolean = False
    Dim screenshotBitmap As Bitmap '
    Private marginRight As Integer
    Public cut_screen As Boolean = True  '是不是可以截图
    Dim connectionString As String = "Data Source =" + Environment.CurrentDirectory + "/web.db"  'Sqlite的链接
    

web.db 放在VBWinFormsApp\bin\Debug\net8.0-windows 中 。同时也有menu.js 其中 Download为下载的目录,pic为截图存方的目 录。

toolstrip的 ToolStripButton的设置

ToolStrip1.ImageScalingSize = New Size(20, 20)
ToolStrip1.Items.AddRange(New ToolStripItem() {ToolStripButtonpre, ToolStripButtonnext, ToolStripButtonrefresh, ToolStripButtonHome, ToolStripButtondev, ToolStripButtonclear, ToolStripButtonHis, ToolStripButtonadd, ToolStripTextBoxUrl, ToolStripComboBox1, ToolStripButtondrop, ToolStripButtonSearch, ToolStripButtonstar, ToolStripButtonclose, ToolStripButtonuser, ToolStripButtonpass, ToolStripButtonmanage, ToolStripButtonCut, ToolStripButtonpicList, ToolStripButtonHelp})
ToolStrip1.Location = New Point(0, 0)
ToolStrip1.Name = "ToolStrip1"
ToolStrip1.Padding = New Padding(0)
ToolStrip1.Size = New Size(1363, 27)
ToolStrip1.Stretch = True
ToolStrip1.TabIndex = 0
ToolStrip1.Text = "ToolStrip1"
' 
' ToolStripButtonpre
' 
ToolStripButtonpre.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonpre.Image = My.Resources.Resources.arrow_left_bold
ToolStripButtonpre.ImageTransparentColor = Color.Magenta
ToolStripButtonpre.Name = "ToolStripButtonpre"
ToolStripButtonpre.Size = New Size(24, 24)
ToolStripButtonpre.Tag = "pre"
ToolStripButtonpre.Text = "前"
' 
' ToolStripButtonnext
' 
ToolStripButtonnext.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonnext.Image = My.Resources.Resources.arrow_right_bold
ToolStripButtonnext.ImageTransparentColor = Color.Magenta
ToolStripButtonnext.Name = "ToolStripButtonnext"
ToolStripButtonnext.Size = New Size(24, 24)
ToolStripButtonnext.Tag = "next"
ToolStripButtonnext.Text = "下一个"
' 
' ToolStripButtonrefresh
' 
ToolStripButtonrefresh.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonrefresh.Image = My.Resources.Resources.刷新
ToolStripButtonrefresh.ImageTransparentColor = Color.Magenta
ToolStripButtonrefresh.Name = "ToolStripButtonrefresh"
ToolStripButtonrefresh.Size = New Size(24, 24)
ToolStripButtonrefresh.Tag = "refresh"
ToolStripButtonrefresh.Text = "刷新"
' 
' ToolStripButtonHome
' 
ToolStripButtonHome.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonHome.Image = My.Resources.Resources.首页
ToolStripButtonHome.ImageTransparentColor = Color.Magenta
ToolStripButtonHome.Name = "ToolStripButtonHome"
ToolStripButtonHome.Size = New Size(24, 24)
ToolStripButtonHome.Tag = "home"
ToolStripButtonHome.Text = "首页"
' 
' ToolStripButtondev
' 
ToolStripButtondev.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtondev.Image = My.Resources.Resources.测试
ToolStripButtondev.ImageTransparentColor = Color.Magenta
ToolStripButtondev.Name = "ToolStripButtondev"
ToolStripButtondev.Size = New Size(24, 24)
ToolStripButtondev.Tag = "dev"
ToolStripButtondev.Text = "开发"
' 
' ToolStripButtonclear
' 
ToolStripButtonclear.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonclear.Image = My.Resources.Resources.失败
ToolStripButtonclear.ImageTransparentColor = Color.Magenta
ToolStripButtonclear.Name = "ToolStripButtonclear"
ToolStripButtonclear.Size = New Size(24, 24)
ToolStripButtonclear.Tag = "clear"
ToolStripButtonclear.Text = "清除"
' 
' ToolStripButtonHis
' 
ToolStripButtonHis.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonHis.Image = CType(resources.GetObject("ToolStripButtonHis.Image"), Image)
ToolStripButtonHis.ImageTransparentColor = Color.Magenta
ToolStripButtonHis.Name = "ToolStripButtonHis"
ToolStripButtonHis.Size = New Size(24, 24)
ToolStripButtonHis.Tag = "history"
ToolStripButtonHis.Text = "历史"
' 
' ToolStripButtonadd
' 
ToolStripButtonadd.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonadd.Image = My.Resources.Resources.增加
ToolStripButtonadd.ImageTransparentColor = Color.Magenta
ToolStripButtonadd.Name = "ToolStripButtonadd"
ToolStripButtonadd.Size = New Size(24, 24)
ToolStripButtonadd.Tag = "add"
ToolStripButtonadd.Text = "增加"
' 
' ToolStripTextBoxUrl
' 
ToolStripTextBoxUrl.BorderStyle = BorderStyle.FixedSingle
ToolStripTextBoxUrl.Name = "ToolStripTextBoxUrl"
ToolStripTextBoxUrl.Size = New Size(812, 27)
ToolStripTextBoxUrl.Tag = "search"
' 
' ToolStripComboBox1
' 
ToolStripComboBox1.Name = "ToolStripComboBox1"
ToolStripComboBox1.Size = New Size(75, 27)
ToolStripComboBox1.Visible = False
' 
' ToolStripButtondrop
' 
ToolStripButtondrop.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtondrop.Image = CType(resources.GetObject("ToolStripButtondrop.Image"), Image)
ToolStripButtondrop.ImageTransparentColor = Color.Magenta
ToolStripButtondrop.Name = "ToolStripButtondrop"
ToolStripButtondrop.Size = New Size(24, 24)
ToolStripButtondrop.Tag = "droplist"
ToolStripButtondrop.Text = "下拉"
ToolStripButtondrop.ToolTipText = "下拉"
' 
' ToolStripButtonSearch
' 
ToolStripButtonSearch.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonSearch.Image = CType(resources.GetObject("ToolStripButtonSearch.Image"), Image)
ToolStripButtonSearch.ImageTransparentColor = Color.Magenta
ToolStripButtonSearch.Name = "ToolStripButtonSearch"
ToolStripButtonSearch.Size = New Size(24, 24)
ToolStripButtonSearch.Tag = "search"
ToolStripButtonSearch.Text = "查询"
' 
' ToolStripButtonstar
' 
ToolStripButtonstar.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonstar.Image = My.Resources.Resources.收藏
ToolStripButtonstar.ImageTransparentColor = Color.Magenta
ToolStripButtonstar.Name = "ToolStripButtonstar"
ToolStripButtonstar.Size = New Size(24, 24)
ToolStripButtonstar.Tag = "star"
ToolStripButtonstar.Text = "收藏"
' 
' ToolStripButtonclose
' 
ToolStripButtonclose.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonclose.Image = My.Resources.Resources.close
ToolStripButtonclose.ImageTransparentColor = Color.Magenta
ToolStripButtonclose.Name = "ToolStripButtonclose"
ToolStripButtonclose.Size = New Size(24, 24)
ToolStripButtonclose.Tag = "close"
ToolStripButtonclose.Text = "关闭"
' 
' ToolStripButtonuser
' 
ToolStripButtonuser.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonuser.Image = My.Resources.Resources.头像
ToolStripButtonuser.ImageTransparentColor = Color.Magenta
ToolStripButtonuser.Name = "ToolStripButtonuser"
ToolStripButtonuser.Size = New Size(24, 24)
ToolStripButtonuser.Tag = "user"
ToolStripButtonuser.Text = "我的"
' 
' ToolStripButtonpass
' 
ToolStripButtonpass.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonpass.Enabled = False
ToolStripButtonpass.Image = My.Resources.Resources.edit
ToolStripButtonpass.ImageTransparentColor = Color.Magenta
ToolStripButtonpass.Name = "ToolStripButtonpass"
ToolStripButtonpass.Size = New Size(24, 24)
ToolStripButtonpass.Text = "修改密码"
' 
' ToolStripButtonmanage
' 
ToolStripButtonmanage.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonmanage.Enabled = False
ToolStripButtonmanage.Image = My.Resources.Resources.file_common
ToolStripButtonmanage.ImageTransparentColor = Color.Magenta
ToolStripButtonmanage.Name = "ToolStripButtonmanage"
ToolStripButtonmanage.Size = New Size(24, 24)
ToolStripButtonmanage.Tag = "manage"
ToolStripButtonmanage.Text = "管理"
' 
' ToolStripButtonCut
' 
ToolStripButtonCut.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonCut.Enabled = False
ToolStripButtonCut.Image = CType(resources.GetObject("ToolStripButtonCut.Image"), Image)
ToolStripButtonCut.ImageTransparentColor = Color.Magenta
ToolStripButtonCut.Name = "ToolStripButtonCut"
ToolStripButtonCut.Size = New Size(24, 24)
ToolStripButtonCut.Tag = "cut"
ToolStripButtonCut.Text = "截取"
' 
' ToolStripButtonpicList
' 
ToolStripButtonpicList.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonpicList.Enabled = False
ToolStripButtonpicList.Image = CType(resources.GetObject("ToolStripButtonpicList.Image"), Image)
ToolStripButtonpicList.ImageTransparentColor = Color.Magenta
ToolStripButtonpicList.Name = "ToolStripButtonpicList"
ToolStripButtonpicList.Size = New Size(24, 24)
ToolStripButtonpicList.Tag = "pics"
ToolStripButtonpicList.Text = "图片例表"
' 
' ToolStripButtonHelp
' 
ToolStripButtonHelp.DisplayStyle = ToolStripItemDisplayStyle.Image
ToolStripButtonHelp.Image = CType(resources.GetObject("ToolStripButtonHelp.Image"), Image)
ToolStripButtonHelp.ImageTransparentColor = Color.Magenta
ToolStripButtonHelp.Name = "ToolStripButtonHelp"
ToolStripButtonHelp.Size = New Size(24, 24)
ToolStripButtonHelp.Tag = "help"
ToolStripButtonHelp.Text = "帮助"

在ToolStrip1_ItemClicked中用select case 去写逻辑

 Private Async Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked
     Dim webView = GetActiveWebView()
     Try
         If webView IsNot Nothing Then
             If webView.CoreWebView2 Is Nothing Then
                 Await webView.EnsureCoreWebView2Async()
             End If
         Else
             ' 处理 webView 为 Nothing 的情况,可以在这里添加适当的日志记录或其他错误处理逻辑
             Console.WriteLine("webView is Nothing.")
         End If
     Catch ex As Exception
         ' 处理异常,可以在这里添加适当的日志记录或其他错误处理逻辑
         Console.WriteLine($"An error occurred: {ex.Message}")
     End Try
     Select Case TryCast(e.ClickedItem.Tag, String)
         Case "search" '搜索
             Try
                 Dim url = ToolStripTextBoxUrl.Text
                 Debug.WriteLine($"url:{url}")
                 webView.Source = New Uri(url)
             Catch ex As Exception
                 Try
                     ToolStripTextBoxUrl.Text = "https://" & ToolStripTextBoxUrl.Text
                     webView.Source = New Uri(ToolStripTextBoxUrl.Text)
                 Catch
                 End Try
             End Try
         Case "pre"
             webView.GoBack()
         Case "next"
             webView.GoForward()
         Case "dev"
             webView.CoreWebView2.OpenDevToolsWindow()
         Case "refresh"
             webView.CoreWebView2.Reload()
         Case "close"
             Dim index = TabControl1.SelectedIndex
             If index <> 0 Then
                 Try
                     TabControl1.SelectedIndex = index - 1
                     TabControl1.TabPages.RemoveAt(index)
                     webViewList.RemoveAt(index - 1)
                     webView.Dispose()
                 Catch ex As Exception

                 End Try

             End If
         Case "clear"
             If MessageBox.Show("清除所有历史记录?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK Then
                 Await webView.CoreWebView2.Profile.ClearBrowsingDataAsync()
                 webView.CoreWebView2.Profile.CookieManager.DeleteAllCookies()
             End If
         Case "history" '历史,改用下载记录代替
             webView.CoreWebView2.OpenDefaultDownloadDialog()
         Case "add" '打开新的窗口
             LoadEmptyUri()
         Case "star"
             If ToolStripButtonstar.ImageIndex = -1 Or ToolStripButtonstar.ImageIndex = 11 Then


                 ' 清理标题字符串,然后将其分配给 customLinkInfo.Title
                 Dim cleanedTitle As String = webView.CoreWebView2.DocumentTitle.Trim()
                 For Each ch As Char In cleanedTitle
                     Debug.Write(ch)
                 Next
                 Dim customLinkInfo As New LinkInfo(ToolStripTextBoxUrl.Text, cleanedTitle)

                 Debug.WriteLine(customLinkInfo.link)
                 Debug.WriteLine(customLinkInfo.title)
                 linkList.Add(customLinkInfo)
                 ToolStripButtonstar.ImageIndex = 12
             Else
                 Dim index = linkList.FindIndex(Function(item) item.link = ToolStripTextBoxUrl.Text)
                 Debug.WriteLine(index)
                 If index >= 0 Then
                     linkList.RemoveAt(index)
                     ToolStripButtonstar.ImageIndex = 11
                 End If
             End If
             updateLinkList()
         Case "home"
             LoadUri(TryCast(LinkLabel1.Tag, String))
         Case "user"
             Dim childForm As New FormLogin(Me)
             childForm.ShowDialog()
             Dim returnedValue As String = childForm.ReturnValue
             If returnedValue IsNot Nothing Then
                 ' 在这里处理返回的值
                 ' MessageBox.Show(returnedValue, "返回的值")
                 ToolStripButtonuser.Tag = "quit"
                 ToolStripButtonpass.Enabled = True
                 ToolStripButtonpass.Tag = "pass"
                 ToolStripButtonmanage.Enabled = True
                 ToolStripButtonCut.Enabled = True
                 ToolStripButtonpicList.Enabled = True

             End If
         Case "quit"
             Dim result As DialogResult = MessageBox.Show("确定退出吗?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
             If result = DialogResult.Yes Then
                 ToolStripButtonuser.Tag = "user"
                 ToolStripButtonmanage.Tag = "manage"
                 ToolStripButtonpass.Enabled = False
                 ToolStripButtonmanage.Enabled = False
                 ToolStripButtonCut.Enabled = False
                 ToolStripButtonpicList.Enabled = False
             End If
         Case "cut"
             Dim screen As New FormScreen(Me)
             screen.SomeValue = webView.CoreWebView2.Source
             screen.ShowDialog()
         Case "pass"
             Dim passwordForm As New FormPass(Me)
             passwordForm.ShowDialog()
         Case "manage"
             Dim ManageForm As New FormUrlList(Me)
             ManageForm.ShowDialog()
             If ManageForm.return_url <> "" Then
                 AddNewTabPage(ManageForm.return_url)
             End If
         Case "droplist"
             Dim addressForm As New FormAddress(Me)
             addressForm.ShowDialog()
             Dim returnedValue As String = addressForm.ReturnValue
         Case "pics"
             Dim picsform As New FormImageList(Me)
             picsform.ShowDialog()
         Case "help"
             Dim helpForm As New FormHelp()
             helpForm.ShowDialog()
     End Select
 End Sub
   ' 这里 是通过TabControl1 webViewList 获取里面的 WebView2
    Private Function GetActiveWebView() As WebView2
        Dim v As WebView2
        Try
            v = webViewList(TabControl1.SelectedIndex - 1)
        Catch
            Return Nothing
        End Try
        If TabControl1.SelectedIndex > 0 Then
            Return webViewList(TabControl1.SelectedIndex - 1)
        End If
    End Function
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 首先,您需要下载安装WebView2 SDK,然后在Visual Studio中使用NuGet管理器安装Microsoft.Web.WebView2.WinForms包。接下来,您可以在您的VB.NET应用程序中添WebView2控件,并使用以下代码来载网页:webView2.Source = New Uri("http://example.com")。 ### 回答2: WebView2 是一个使用 Chromium 内核的 Web 控件,方便在 VB.NET 程序中嵌入网页视图。以下是使用 WebView2 控件编写 VB.NET 程序的基本步骤: 第一步:安装 WebView2 运行时 1. 在 Visual Studio 中打开 VB.NET 程序项目。 2. 在 "工具" 菜单下选择 "NuGet 包管理器",然后选择 "管理解决方案的 NuGet 包"。 3. 在 "NuGet 包管理器控制台" 中,运行以下命令安装 WebView2 运行时: Install-Package Microsoft.Web.WebView2 -Version 1.0.1106.1 第二步:添 WebView2 控件到窗体 1. 在窗体设计器中,从工具箱中找到 "WebView2" 控件并添到窗体上。 2. 调整控件的大小和位置,使其适应窗体布局。 第三步:在代码中使用 WebView2 控件 1. 在窗体代码中,添以下命名空间引用: Imports Microsoft.Web.WebView2.WinForms 2. 在窗体类中定义一个 WebView2 实例变量,例如: Private webView As WebView2 3. 在窗体的载事件中初始化 WebView2 控件,例如: Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load webView = New WebView2() webView.Dock = DockStyle.Fill Me.Controls.Add(webView) webView.Source = New Uri("https://example.com") End Sub 在上述代码中,将 WebView2 控件添到窗体并指定要载的网页。 至此,你已经成功使用 WebView2 控件编写了一个简单的 VB.NET 程序。你可以根据需要进一步定制 WebView2 的功能,如执行 JavaScript、处理事件等。 需要注意的是,你可能还需要将 WebView2 运行时进行包含到你的应用程序安装程序中,以便将 WebView2 与你的程序一起分发给用户。具体的部署可以参考 Microsoft 官方文档。 ### 回答3: 在VB.NET中使用WebView2,首先需要进行以下步骤: 1. 安装WebView2控件:在电脑上安装WebView2控件。可以从WebView2的官方网站(https://developer.microsoft.com/en-us/microsoft-edge/webview2/)下载最新版本的运行时组件。 2. 创建VB.NET项目:在Visual Studio中创建一个新的VB.NET项目。 3. 添WebView2控件到表单:打开Visual Studio的“工具箱”,然后找到“WebView2”控件。将其拖放到表单上以添控件。 4. 设置WebView2控件的属性:选中刚添WebView2控件,然后在属性窗口中为其设置属性。例如,可以设置WebView2控件的大小、位置等。 5. 编写VB.NET代码:使用VB.NET代码来控制WebView2控件的行为。例如,可以载网页、显示网页标题等等。以下是一个简单的示例代码: ```vb Imports Microsoft.Web.WebView2.Core Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 初始化WebView2控件 webView2Control.Source = New Uri("https://www.example.com") ' 注册WebView2控件的事件 AddHandler webView2Control.NavigationCompleted, AddressOf WebView2_NavigationCompleted End Sub Private Sub WebView2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) ' 在导航完成时显示网页标题 MessageBox.Show(webView2Control.CoreWebView2.DocumentTitle) End Sub End Class ``` 在这个示例中,首先在窗体载时初始化WebView2控件,并通过指定URL一个网页。然后,通过注册NavigationCompleted事件来监听WebView2控件的导航完成事件。在导航完成时,使用MessageBox显示网页的标题。 以上就是在VB.NET中使用WebView2控件的基本步骤和示例代码。当然,你还可以根据具体需求来使用WebView2控件,例如执行JavaScript代码、与网页进行交互等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老大白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值