-1

テキストボックスは、ユーザーが入力した内容に「http://」を追加してから (例: 「google.com」が「http://google.com」に変わります)、Web ブラウザーに送信しますが、ユーザーが「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://」を追加して失敗します。

より良い解決策は、uri の代わりに文字列を web.Navigate() に渡すことです。文字列を渡すと、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 に答える