Cómo: Utilizar el control WebBrowser en .NET Compact Framework

Actualización: noviembre 2007

.NET Compact Framework es compatible con las funciones básicas del control WebBrowser de formularios Windows Forms. Los miembros siguientes requieren la versión 5.0 del software de Windows Mobile para Pocket PC o Smartphone. Esta lista está sujeta a cambios.

Las consideraciones siguientes sólo se aplican a Windows Mobile 2003 para Pocket PC y Windows Mobile 2003 para Smartphone:

  • El método Refresh produce una excepción NotSupportedException.

  • Puesto que el control WebBrowser puede contener subcontroles incrustados en el formulario HTML, no puede determinar si el control WebBrowser tiene el foco mediante la supervisión del evento GotFocus. Como solución, utilice un proceso de eliminación del resto de los controles que quizá tengan el foco.

  • La propiedad Url no se establece en WebBrowserNavigatingEventArgs y devuelve una cadena vacía.

En un dispositivo que no sea un Pocket PC ni un Smartphone que se ejecute bajo Microsoft Windows CE 5.0, los eventos Navigated y DocumentCompleted se producen dos veces cuando se visita una nueva dirección URL. Está prevista la corrección de este error en versiones futuras de Windows CE.

Puede crear una instancia de WebBrowser para responder al evento HelpRequested con el fin de mostrar los temas de la Ayuda en pantalla de la aplicación.

.NET Compact Framework no admite la propiedad Document ni sus propiedades y eventos relacionados, exceptuando la propiedad DocumentText. Se puede utilizar la propiedad DocumentText para presentar HTML a los usuarios, por ejemplo, para proporcionar vínculos y un simple formulario HTML, pero .NET Compact Framework no admite el acceso al contenido HTML de una página Web con esta propiedad.

Puede determinar la respuesta al formulario con la propiedad WebBrowserDocumentCompletedEventArgs.Url en el código que controla el evento Navigating. Se proporciona un ejemplo de código en el primer procedimiento que se muestra a continuación.

No se puede navegar fuera de un control WebBrowser en una aplicación de Smartphone. Como solución, puede detectar un evento clave y establecer el foco en otro control. Se proporciona un ejemplo de código en el segundo procedimiento que se muestra a continuación.

Nota:

Esta solución alternativa requiere Windows Mobile 5.0 o .NET Compact Framework 3.5.

Para obtener información general sobre el uso del control WebBrowser, vea Cómo: Agregar funciones de explorador Web a una aplicación de Windows Forms.

Para recopilar información de los controles HTML incrustados

  1. Utilice la propiedad DocumentText para mostrar HTML en el control WebBrowser. Este HTML contiene un formulario con un vínculo y un cuadro de texto para especificar una dirección URL.

    Dim sb As New StringBuilder()
    sb.Append("<html><body>")
    sb.Append("<a href=")
    sb.Append("""")
    sb.Append("https://www.microsoft.com")
    sb.Append("""")
    sb.Append(">Microsoft</a><p>")
    sb.Append("Specify a URL:<br>")
    sb.Append("<form action=''><input type='text' name='address'/>")
    sb.Append("<br><input type='submit'>")
    sb.Append("</form></body></html>")
    webBrowser1.DocumentText = sb.ToString()
    
    StringBuilder sb = new StringBuilder();
    sb.Append("<html><body>");
    sb.Append("<a href=");
    sb.Append("\"");
    sb.Append("https://www.microsoft.com");
    sb.Append("\"");
    sb.Append(">Microsoft</a><p>");
    sb.Append("Specify a URL:<br>");
    sb.Append("<form action=''><input type='text' name='address'/>");
    sb.Append("<br><input type='submit'>");
    sb.Append("</form></body></html>");
    webBrowser1.DocumentText = sb.ToString();
    
  2. Utilice el evento Navigating para determinar si la dirección URL contiene una respuesta del formulario. Si es así, navegue a dicha dirección.

    Private Sub webBrowser1_Navigating(ByVal sender As Object, ByVal e As WebBrowserNavigatingEventArgs)  Handles webBrowser1.Navigating
        Dim x As Integer
        '  The URL contains the results of the
        '  HTML form following the equals sign.
        x = e.Url.ToString().LastIndexOf("=")
        If x <> - 1 Then
            Dim Redirect As String
            Redirect = e.Url.ToString().Substring((x + 1))
            If Redirect <> "" Then
                ' Error handling code omitted in this example.
                ' Uri constructor throws a UriFormatException if there's
                ' an error.
                webBrowser1.Navigate(New Uri(Redirect))
            Else
                MessageBox.Show("Specify a URL")
            End If
        End If
    
    End Sub    
    
    private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
     {
         int x;
         //  The URL contains the results of the
         //  HTML form following the equals sign.
         x = e.Url.ToString().LastIndexOf("=");
         if (x != -1)
         {
             string Redirect;
             Redirect = e.Url.ToString().Substring(x + 1);
             if (Redirect != "")
             {
                 // Error handling code omitted in this example.
                 // Uri constructor throws a UriFormatException if there's
                 // an error.
                 webBrowser1.Navigate(new Uri(Redirect));
             }
             else
             {
                 MessageBox.Show("Specify a URL");
             }
         }
     }
    

    En el ejemplo de código de Visual Basic anterior, el controlador del evento Navigating ya está asociado al control. Declare este controlador de eventos en C# de la siguiente manera:

      this.webBrowser1.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.webBrowser1_Navigating);
    

Para navegar fuera del WebBrowser en el Smartphone

  • El ejemplo de código siguiente establece el foco en otro control cuando se presiona la tecla de navegación Re Pág.

    El control WebBrowser utiliza la lógica de tabulación de Microsoft Pocket Internet Explorer para que el usuario pueda navegar a vínculos diferentes y controles incrustados en el sitio web mostrado por el control. Puede reemplazar este comportamiento predeterminado utilizando la propiedad KeyPreview.

    En el siguiente ejemplo de código se supone que KeyPreview se ha establecido en true en el constructor del formulario o en código que controla el evento Load del formulario.

    Protected Overrides Sub OnKeyDown(ByVal keyg As KeyEventArgs) 
        If keyg.KeyCode = Keys.Up Then
            textBox1.Focus()
        End If
        MyBase.OnKeyDown(keyg)
    
    protected override void OnKeyDown(KeyEventArgs keyg)
    {
        if (keyg.KeyCode == Keys.Up)
        {
            textBox1.Focus();
        }
        base.OnKeyDown(keyg);
    }
    

Compilar el código

Para este ejemplo se requieren referencias a los siguientes espacios de nombres:

Vea también

Tareas

Cómo: Agregar funciones de explorador Web a una aplicación de Windows Forms

Conceptos

.Temas "Cómo..." de .NET Compact Framework