Pregunta

Tengo la tarea de un proyecto por el que necesito crear una versión reducida de una interfaz de usuario como Firebug, donde el usuario pueda cargar una página HTML y, al pasar el mouse sobre los elementos, aparecerán resaltados. La aplicación permitirá a los usuarios seleccionar una tabla para ser escaneada en pantalla ... aún no han llegado a esa parte.

¿Algún consejo?

Gracias

¿Fue útil?

Solución

Bueno, no he usado la interfaz de usuario de Firebug, pero he hecho exactamente lo que describe al usar el control WebBrowser .NET 2.0 en una aplicación de WinForms.

Básicamente, agregué WebBrowser y un control Timer al formulario, luego, en el evento del temporizador, consulté la posición del mouse usando la función nativa GetCursorPos y utilizé el método GetBalowser.Document (clase HtmlDocument) GetElementFromPoint (ajustando el método de x e y posición para ser relativo al control del navegador).

Esto devuelve cualquier elemento HtmlElement bajo la posición del mouse. Aquí está la carne del método:

HtmlElement GetCurrentElement()
{
    if (Browser.ReadyState == WebBrowserReadyState.Complete && Browser.Document != null)
    {
        Win32Point mouseLoc = HtmlScan.Win32.Mouse.GetPosition();
        Point mouseLocation = new Point(mouseLoc.x, mouseLoc.y);
        // modify location to match offset of browser window and control position:
        mouseLocation.X = ((mouseLocation.X - 4) - this.Left) - Browser.Left;
        mouseLocation.Y = ((mouseLocation.Y - 31) - this.Top) - Browser.Top;

        HtmlElement element = Browser.Document.GetElementFromPoint(mouseLocation);

        return element;
    }

    return null;
}

Después de obtener el elemento HTML, puedes hacer que InnerHTML se analice como mejor te parezca.

Richard

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top