【问题标题】:c# Web browser : how to solve?c#网络浏览器:如何解决?
【发布时间】:2017-04-14 14:51:18
【问题描述】:

我正在用 c# 编写一些讲座。 但是网络浏览器出现错误。 这意味着它不支持此网络浏览器。 但是我的网络浏览器已经完全更新了。 谁知道如何解决这个问题?请帮帮我.. here is image.

private void Search_data_Click(object sender, EventArgs e)
{
    string street = txt_street.Text;
    string city = txt_city.Text;
    string state = txt_state.Text;
    string zip = txt_zip.Text;
    try
    {
        StringBuilder queryaddress = new StringBuilder();
        queryaddress.Append("http://maps.google.com/maps?q=");

        if (street!=string.Empty)
        {
            queryaddress.Append(street+","+"+");
        }
        if (city != string.Empty)
        {
            queryaddress.Append(city + "," + "+");
        }
        if (state != string.Empty)
        {
            queryaddress.Append(state + "," + "+");
        }
        if (zip != string.Empty)
        {
            queryaddress.Append(zip + "," + "+");
        }

        webBrowser1.Navigate(queryaddress.ToString());

    }
    catch(Exception ex)
    { 
        MessageBox.Show(ex.Message.ToString(), "Error");
    }
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
}

【问题讨论】:

  • 你能发布你的代码吗?仅根据屏幕截图很难弄清楚发生了什么。将 Google 错误消息翻译成英文也会有所帮助。
  • 这是我的代码。有什么错误吗?
  • 代码看起来不错,但请查看此 SO 帖子:stackoverflow.com/questions/33102137/…
  • 非常感谢。我会试试这个。

标签: c# google-maps dictionary web browser


【解决方案1】:

问题是webbrowser控件使用Internet Explorer 7。你必须告诉计算机使用ie11。

关注本教程:http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version

这里有更多信息http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version

您必须在 Windows 寄存器中添加一个密钥,然后重新启动您的应用程序。这对我有用。

希望这会有所帮助。

参考:https://www.codeproject.com/questions/998563/how-to-display-google-maps-in-webbrowser-control-u

解决方案 2:

您可以查看 DotNetBrowser 库,该库允许将基于 Chromium 的 WPF 组件嵌入到您的 .NET 应用程序中。它有非常强大和简单的API。以下示例演示了如何创建 Browser 实例并加载网页。

https://social.msdn.microsoft.com/Forums/en-US/42057978-533a-4de5-9739-061dbc972f38/can-we-integrate-google-chromefirefox-with-net-web-browser-control?forum=csharpgeneral

【讨论】:

  • 非常感谢您对我的评论。我会试试这个并解决问题。
  • 这里是一个教程链接,该教程描述了如何将 Google 地图嵌入 DotNetBrowser 并访问其 JavaScript API:c-sharpcorner.com/article/…
【解决方案2】:

您可以添加与谷歌地图兼容的版本。在这种情况下,请使用 11001,即 IE 11。

public Mapa()
    {
        InitializeComponent();
        //Por defecto el web browser utiliza la versión 7 de Internet Explorer incompatible para visualizar google maps, 
        //con el indicador 11001 se setea a la versión 11 de Internet Explorer.
        SetearVersionWebBrowser(11001);
    }

    private void btn_Buscar_Click(object sender, EventArgs e)
    {

        try
        {
            //Asignación de los valores de los texbox
            string provincia = txt_provincia.Text;
            string ciudad = txt_ciudad.Text;
            string calle = txt_calle.Text;
            string codigoPostal = txt_postal.Text;

            StringBuilder direccion = new StringBuilder();
            direccion.Append("http://maps.google.com/maps?q=");

            //Condicionales para validar que si los campos están vacios no se tome ese criterio
            if (calle != string.Empty) {
                direccion.Append(calle + "," + "+");
            }
            if (ciudad != string.Empty)
            {
                direccion.Append(ciudad + "," + "+");
            }
            if (provincia != string.Empty)
            {
                direccion.Append(provincia + "," + "+");
            }
            if (codigoPostal != string.Empty)
            {
                direccion.Append(codigoPostal + "," + "+");
            }

            //Xpcom.EnableProfileMonitoring = false;
            //Xpcom.Initialize("Firefox");

            //Carga el documento espeficiado en la variable direccion
            webBrowser1.Navigate(direccion.ToString());

        }
        catch (Exception ex) {
            MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

    private void SetearVersionWebBrowser(int ie_version)
    {
        //String de la Ruta donde se registrará el Dword
        const string key32bit =
            @"SOFTWARE\Microsoft\Internet Explorer\MAIN\" +
            @"FeatureControl\FEATURE_BROWSER_EMULATION";

        //Se obtiene el nombre del programa en ejecución
        string app_name = System.AppDomain.CurrentDomain.FriendlyName;

        // You can do both if you like.
        //Registra el Dword con los parámetros el primero la ruta, el segundo con el nombre PruebaGrafica.vshost.exe, el tercero con la versión de internet explorer que se quiere ejecutar
        SetearRegistroDword(key32bit, app_name, ie_version);
    }

    //Método que registra un valor DWORD 
    private void SetearRegistroDword(string nonmbreLlave, string nombreValor, int valor)
    {
        // Registro de la clave.
        RegistryKey key =  Registry.CurrentUser.OpenSubKey(nonmbreLlave, true);

        // Se crea la clave solo si no existe.
        if (key == null)
            key = Registry.CurrentUser.CreateSubKey(nonmbreLlave, RegistryKeyPermissionCheck.ReadWriteSubTree);

        // Establece un nombre, la clave de registro y el tipo de datos del registro especificado.
        key.SetValue(nombreValor, valor, RegistryValueKind.DWord);

        // Cierra la clave 
        key.Close();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2011-05-22
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多