2014-10-05 107 views
0

我開發了一個web瀏覽器以及一個自定義地址欄(combobox)。我使用my.settings保存了用戶瀏覽器在該組合框中的所有歷史記錄。這是我的問題。爲了使其正確,我在每個站點前加「http://」。我確實正確處理https,它只有在地址前沒有輸入任何內容時,我用http前綴。我能夠保存歷史記錄就好,我的問題是它創建一個副本,因爲http是由用戶輸入的,因此「http://cnn.com」位於歷史記錄列表中,但cnn.com不是這樣,當用戶輸入cnn.com時它看到它是新的並且附加http://cnn.com到列表中,並且它是一個dup。下面是我的if語句:第一行是我試着說如果這個網站已經存在,不要添加它,只需瀏覽它。vb.net webbrowser 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

您的代碼正在這樣做 - 在執行您所描述的「cnn」時,使用斷點進行調試很容易。 「Else」塊應該在添加之前檢查列表中是否存在新文本 – Plutonix 2014-10-05 11:31:34

+0

ahhhhhh我是多麼愚蠢。謝謝。通過閱讀你的消息來想出它。我應該尋找「http://」+「」+ Combobox1.text – 2014-10-05 11:34:26

+0

是的,那工作。謝謝。你想將其設置爲答案,以便我可以標記它? – 2014-10-05 11:36:12

回答

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中描述的步驟來觀察發生了什麼

+0

謝謝我認爲我會採納您的建議並聲明一個變量並使用它。 – 2014-10-05 11:53:22

+0

因爲它使用相同的字符串2ce使用var可以防止錯字(測試一個版本,添加另一個版本)。當您忘記更新所有存在的位置時,會發生很多複製粘貼代碼。另外,'&'是字符串連接的首選運算符。 – Plutonix 2014-10-05 11:57:28

+0

好的,再次感謝! – 2014-10-05 11:58:23