编写Web浏览器文本框?

时间:2013-01-13 00:17:24

标签: c# visual-studio-2010 windows-phone-7

文本框在发送到网络浏览器之前将“http://”添加到用户输入的内容(例如“google.com”转为“http://google.com”),但是如果用户输入“http://”在他们的网站上出现错误。

这是我的代码:

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

    }

2 个答案:

答案 0 :(得分: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);
    }

答案 1 :(得分: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
}