-1

在发送到网络浏览器之前,文本框会在用户输入的内容中添加“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);

    }
4

2 回答 2

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);
    }
于 2013-01-13T01:27:47.807 回答
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
}
于 2013-01-13T01:39:15.603 回答