2014-10-05 2 views
0

Я разработал веб-браузер и пользовательскую адресную строку (combobox). Я сохраняю всю историю, которую пользователь просматривает в этом поле со списком, используя my.settings. Вот моя проблема. Я префикс каждого сайта с помощью «http: //», чтобы сделать его правильным. Я правильно обрабатываю https, только когда ничего не вводится перед адресом, я префикс http. Я могу сохранить историю просто отлично, моя проблема заключается в ее создании дубликата, потому что пользователь набирает текст, поэтому «http://cnn.com» находится в списке истории, но cnn.com не так, когда пользователь вводит на cnn.com, он видит он как новый и добавляет http://cnn.com к списку, и это дубликат. Ниже приведен оператор if: первая строка - это то, где я пытаюсь сказать, если этот сайт уже существует, не добавляйте его, просто перейдите к нему.vb.net webbrowser if statement

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

+0

ahhhhhh, как глупо со мной. Благодарю. Выяснил это, просто прочитав свой msg. Я должен искать "http: //" + "" + Combobox1.text –

+0

yep, это сработало. Благодарю. Вы хотите установить это как ответ, чтобы я мог его пометить? –

ответ

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

Спасибо, я думаю, я возьму ваш совет и объявлю переменную и использую это вместо этого. –

+0

, так как он использует ту же строку 2ce, используя var, предотвращает опечатку (проверьте одну версию, добавьте другую). это очень часто происходит с кодом копирования-вставки, когда вы забываете обновлять все места, где он существует. Кроме того, '&' является предпочтительным оператором для конкатенации строк. – Plutonix

+0

Хорошо еще раз спасибо! –