我开发了一个Web浏览器以及一个自定义地址栏(组合框)。我使用my.settings保存用户浏览到该组合框中的所有历史记录。这是我的问题。我正在为每个网站添加“http://”前缀,以使其正确。我正确处理https,它只在地址前面没有输入时,我用http作为前缀。我能够很好地保存历史记录,我的问题是它创建了一个副本,因为用户输入了http,因此“http://cnn.com”在历史记录列表中,但当用户在cnn中键入时cnn.com不是这样它将它视为新的并将http://cnn.com附加到列表中,它是一个副本。下面是我的if语句:第一行是我试着说这个网站是否已经存在,不要添加它,只是浏览它。
Private Sub btncustomsite_Click(sender As Object, e As EventArgs) Handles btncustomsite.Click
If ComboBox1.Items.Contains(ComboBox1.Text) Then
WebBrowser1.Navigate(ComboBox1.Text)
ElseIf ComboBox1.Text = "" Then
MsgBox("ENTER A WEBSITE ADDRESS", , "Warning")
ComboBox1.Focus()
Exit Sub
ElseIf ComboBox1.Text.StartsWith("https") Then
ComboBox1.Items.Add(ComboBox1.Text)
WebBrowser1.Navigate(ComboBox1.Text)
ElseIf ComboBox1.Text.StartsWith("http") Then
ComboBox1.Items.Add(ComboBox1.Text)
WebBrowser1.Navigate(ComboBox1.Text)
ElseIf Not ComboBox1.Text.StartsWith("http") Then
ComboBox1.Text = "http://" + ComboBox1.Text
ComboBox1.Items.Add(ComboBox1.Text)
WebBrowser1.Navigate(ComboBox1.Text)
ElseIf Not ComboBox1.Text.EndsWith(".com") Then
WebBrowser1.Navigate("google.com")
WaitForPageLoad()
SendKeys.Send(ComboBox1.Text)
SendKeys.Send("{ENTER}")
Else
ComboBox1.Text = "http://" + ComboBox1.Text
ComboBox1.Items.Add("http://" + ComboBox1.Text)
WebBrowser1.Navigate(ComboBox1.Text)
End If
End Sub
答案 0 :(得分:1)
这一点有缺陷:
Else
ComboBox1.Text = "http://" + ComboBox1.Text
ComboBox1.Items.Add("http://" + ComboBox1.Text)
WebBrowser1.Navigate(ComboBox1.Text)
你想要这样的东西:
Else
Dim tmp As String = "http://" & ComboBox1.Text
' only add if the new text is not there
If ComboBox1.Items.Contains(tmp) = False Then ComboBox1.Items.Add(tmp)
ComboBox1.Text = tmp
WebBrowser1.Navigate(ComboBox1.Text)
您可以在程序开始时设置断点;然后执行为cnn
描述的步骤来观察发生的事情