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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老大白菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值