2013-01-13 28 views
-1

在发送到Web浏览器之前,文本框会将“http://”添加到用户输入的内容(例如“google.com”变为“http://google.com”),但如果用户输入“ http://“,在他们的网站出现错误。编程一个web浏览器文本框?

这是我的代码:

 private void bargo_Click(object sender, RoutedEventArgs e) 
    { 
     Uri targetUri = new Uri(System.String.Format("http://{0}", bar.Text)); 
     web.Navigate(targetUri); 

    } 
+0

所以测试的 “http://” 输入,要么删除或不添加它。这个问题是什么? – PhoenixReborn

+0

'if(!bar.Text.Contains(“http://”))'? –

+0

点击按钮后,如何让文本框松开焦点 – Ravi

回答

2

您可以测试是否已经bar.text以http://开头是这样的:

private void bargo_Click(object sender, RoutedEventArgs e) 
    { 
     string url = bar.Text; 
     if (!url.StartsWith("http://")) 
     { 
      url = "http://" + url; 
     } 
     web.Navigate(new Uri(url); 
    } 

如果用户输入 “https://开头”或“ftp://”(或gopher://,irc://,ircs://,ftp://,news://,nntp://,worldwind://,telnet://,svn ://,git://,mms://和mailto :)此方法仍会添加“http://”并失败。

更好的解决方案是将字符串传递到web.Navigate()而不是uri。当你传入一个字符串时,WebBrowser控件会自动添加http://就像浏览器一样。

private void bargo_Click(object sender, RoutedEventArgs e) 
    { 
     web.Navigate(bar.Text); 
    } 

编辑:对于Windows Phone 7的

private void bargo_Click(object sender, RoutedEventArgs e) 
    { 
     web.NavigateToString(bar.Text); 
    } 
+0

由于某些奇怪的原因web.navigate(bar.text)无法与Windows Phone一起使用。 – Ravi

+0

我错过了你使用的是Windows Phone。试试: web.NavigateToString(bar.Text); –

0
var culture = System.Globalization.CultureInfo.InvariantCulture.CompareInfo; 
if (culture .IsPrefix(textbox.Text, "http://") == false) 
    textbox.Text = "http://" + textbox.Text; 
var regex = new Regex(@"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$"); 
if (regex.IsMatch(textbox.Text)) 
{ 
    //Your logic here 
}