0

在 windows phone7 的网络浏览器应用程序中,如果用户在 UrlTExtBox 中仅键入“bing.com”,UrlTextBox 会自动填充“http://www”。以下代码显示了这一点。同时,如果用户键入没有“.com”的简单单词(如技术或项目玻璃),UrlTextBox 再次自动填充“http://”。但我需要,如果只有单词,那么它应该在 Google 或 Bing 中搜索。任何人都可以帮助我吗?提前感谢您的辛勤工作!

 private void UrlTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            Uri url;
            if (Uri.TryCreate(UrlTextBox.Text, UriKind.Absolute, out url))
            {
                this.urls[this.currentIndex] = UrlTextBox.Text;
                this.browsers[this.currentIndex].Navigate(url);
                navigationcancelled = false;
                this.browsers[this.currentIndex].Focus();
            }
            else
            {
                Navigate(UrlTextBox.Text);
            }
        }
    }

 private void Navigate(String address)
    {
        if (String.IsNullOrEmpty(address)) return;
        if (address.Equals("about:blank")) return;
        if (!address.StartsWith("http://") &&
            !address.StartsWith("https://"))
        {
            address = "http://" + address;
        }
        try
        {
            browsers[this.currentIndex].Navigate(new Uri(address));
        }
        catch (System.UriFormatException)
        {
            return;
        }
    }
4

4 回答 4

0

你不能把它分开.,然后如果数组计数是一个,你知道它是一个单词,应该添加.com,否则你应该把它当作一个正确的链接。

于 2012-05-25T03:01:20.727 回答
0

在您的导航功能中检查它是否是框中的一个单词,如果是,请检查它是否以 .com 或 .net 等结尾。如果是,请添加 http 并将其发送,如果没有将其附加到 google 搜索 url。

于 2012-05-25T03:26:36.433 回答
0

这是一个简单的控制台应用程序,它演示了您应该寻找的逻辑:

namespace SO10747736
{
    using System;

    internal enum TestResult
    {
        TryCreatePass,
        ValidWithPrefix,
        Search,
        DoNothing,
        Unknown
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            Test("http://example.com", TestResult.TryCreatePass);
            Test("https://example.com", TestResult.TryCreatePass);
            Test("https://example", TestResult.TryCreatePass);
            Test("example.com", TestResult.ValidWithPrefix);
            Test("example", TestResult.Search);
            Test("another example", TestResult.Search);
            Test(null, TestResult.DoNothing);
            Test(string.Empty, TestResult.DoNothing);
            Test("  ", TestResult.DoNothing);
            Test("about:blank", TestResult.DoNothing);

            Console.ReadKey(true);
        }

        private static void Test(string toTest, TestResult expectedResult)
        {
            var result = SimulateEnterkeyPressed(toTest);

            if (result == expectedResult)
            {
                Console.WriteLine("{0} was parsed correctly", toTest);
            }
            else
            {
                Console.WriteLine("*** {0} was NOT parsed correctly and returned {1} ***", toTest, result);
            }
        }

        private static TestResult SimulateEnterkeyPressed(string toTest)
        {
            if (string.IsNullOrWhiteSpace(toTest))
            {
                return TestResult.DoNothing;
            }

            // Uri.TryCreate will treat this as valid
            if (toTest.Equals("about:blank"))
            {
                return TestResult.DoNothing;
            }

            Uri url;
            if (Uri.TryCreate(toTest, UriKind.Absolute, out url))
            {
                return TestResult.TryCreatePass;
            }
            else
            {
                return TryParse(toTest);
            }
        }

        private static TestResult TryParse(string toTest)
        {
            if (!toTest.Contains("."))
            {
                return TestResult.Search;
            }

            if (!toTest.StartsWith("http://") ||
                !toTest.StartsWith("https://"))
            {
                return TestResult.ValidWithPrefix;
            }

            return TestResult.Unknown;
        }
    }
}
于 2012-05-25T09:08:35.603 回答
0

终于对马特莱西的答案有了一个想法。只需在 Navigate 中再添加一个 if 语句。

        if (!address.Contains("."))
        {
            address = " ";
            browsers[this.currentIndex].Navigate(new Uri("http://www.google.com/search?q=" + UrlTextBox.Text, UriKind.Absolute));
        }

关键是,如果我没有添加address = " "; 然后 UrlTextBox 自动填充http://

于 2012-05-25T12:51:40.530 回答