none
usar los eventos del webbrowser sin visualizarlo RRS feed

  • Pregunta

  • Hola a todos, he trabajado pequeñas cosas con el componente webBrowser y es muy bueno... ahora quiero usaerlo sin la necesidad de visualizar el contenido de la web...

    cuando se agrega el componente de forma visual el componente tiene sus respectivos eventos que son de mucha utilidad, pero cuando inicializamos el componente:

    WebBrowser wbNavegar = new WebBrowser();



    no tengo ni idea de como llamar los eventos como OnNavegated u otro, pues cuando lo hago me la visual me da una recomendacion que me dice que ese evento tiene que estar a la izquierda de un signo += o -= y no se como usar eso...

    ayudeme
    martes, 31 de octubre de 2017 17:35

Respuestas

  • Escribe, por ejemplo

    wbNavegar.Navigating += pirulo;

    cuando te señale que pirulo no existe, le pides al ide que te cree el método. El ide te lo crea con la firma del subtipo de delegado que corresponde.

    +- responde a la semántica del event. Vos le pedís que agregue tu función a la lista de ejecución del delegado (o que la quite, -=). No hay una sobrecarga para el operador =, solamente para += ó -=

    using System;
    using System.IO;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                WebBrowser wbNavegar = new WebBrowser();
    
                wbNavegar.Navigating += pirulo;
                wbNavegar.DocumentCompleted += llegamos;
    
                wbNavegar.Navigate("https://social.msdn.microsoft.com/Forums/es-ES/03a03158-987a-434f-b973-72ea0e3c875a/usar-los-eventos-del-webbrowser-sin-visualizarlo?forum=vcses");
            }
    
            private void pirulo(object sender, WebBrowserNavigatingEventArgs e)
            {
                e.Cancel = true;
                MessageBox.Show(e.Url.AbsoluteUri , "Cancelado" );
            }
    
            private void llegamos(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                throw new NotImplementedException();
            }
    
    
        }
    }
    

    martes, 31 de octubre de 2017 18:16
  • gracias walter_5, pero se me olvido mensionar que la web que quiero monitorizar tiene codigo ajax por lo que quiero q me ejecute una accion cuando cambia una etiqueta div...
    para que sea mas facil la explicacion te voy a dar la web y si puedes dame el codigo que me monitorice el div...

    codigo de la web index.hatml
    <html>
        <head>
            <script type="text/javascript">
            function ejecutarajax(){
                var conexion;
                if (window.XMLHttpRequest){
                  conexion=new XMLHttpRequest();
                }else
                {
                  conexion=new ActiveXObject("Microsoft.XMLHTTP");
                }
                conexion.onreadystatechange=function(){
                    if(conexion.readyState==4 && conexion.status==200){                    document.getElementById("midiv").innerHTML=conexion.responseText;
                    }
                }
                conexion.open("POST","ejemplo.txt",true);
                conexion.send();
            }
            </script>
        </head>
        <body>
            <div id="midiv"></div>
            <button type="button" onclick="ejecutarajax()">Ejecutar</button>
        </body>
    </html>



    en el archivo ejemplo.txt escribe Hola Mundo y guardalo en el mismo directorio de index.html...
    1-El webBrowser tienes que crearlo tu WebBrowser wbNavegar = new WebBrowser();
    2-Un label que muestre el contenido del <div id="midiv"></div> cuando cargues el wbNavegar.
    3-Un button que ejecute la misma accion que el buttom(Ejecutar) de la web.
    4-Una vez ejecutado la accion que en el label cargue el nuevo contenido del <div id="midiv"></div>.

    ya no se que hacer, o sea si me muestra el contenido ya cargado del div, pero no entiendo pq tengo que darle click dos veces al boton para esto. No tome encuenta esto ultimo para que no se complique en el ejemplo.

    muchas gracias... y disculpa la demora
    domingo, 3 de diciembre de 2017 14:12

Todas las respuestas

  • Escribe, por ejemplo

    wbNavegar.Navigating += pirulo;

    cuando te señale que pirulo no existe, le pides al ide que te cree el método. El ide te lo crea con la firma del subtipo de delegado que corresponde.

    +- responde a la semántica del event. Vos le pedís que agregue tu función a la lista de ejecución del delegado (o que la quite, -=). No hay una sobrecarga para el operador =, solamente para += ó -=

    using System;
    using System.IO;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                WebBrowser wbNavegar = new WebBrowser();
    
                wbNavegar.Navigating += pirulo;
                wbNavegar.DocumentCompleted += llegamos;
    
                wbNavegar.Navigate("https://social.msdn.microsoft.com/Forums/es-ES/03a03158-987a-434f-b973-72ea0e3c875a/usar-los-eventos-del-webbrowser-sin-visualizarlo?forum=vcses");
            }
    
            private void pirulo(object sender, WebBrowserNavigatingEventArgs e)
            {
                e.Cancel = true;
                MessageBox.Show(e.Url.AbsoluteUri , "Cancelado" );
            }
    
            private void llegamos(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                throw new NotImplementedException();
            }
    
    
        }
    }
    

    martes, 31 de octubre de 2017 18:16
  • Gracias amigo lo voy a probar y luego comento
    domingo, 5 de noviembre de 2017 15:19
  • gracias walter_5, pero se me olvido mensionar que la web que quiero monitorizar tiene codigo ajax por lo que quiero q me ejecute una accion cuando cambia una etiqueta div...
    para que sea mas facil la explicacion te voy a dar la web y si puedes dame el codigo que me monitorice el div...

    codigo de la web index.hatml
    <html>
        <head>
            <script type="text/javascript">
            function ejecutarajax(){
                var conexion;
                if (window.XMLHttpRequest){
                  conexion=new XMLHttpRequest();
                }else
                {
                  conexion=new ActiveXObject("Microsoft.XMLHTTP");
                }
                conexion.onreadystatechange=function(){
                    if(conexion.readyState==4 && conexion.status==200){                    document.getElementById("midiv").innerHTML=conexion.responseText;
                    }
                }
                conexion.open("POST","ejemplo.txt",true);
                conexion.send();
            }
            </script>
        </head>
        <body>
            <div id="midiv"></div>
            <button type="button" onclick="ejecutarajax()">Ejecutar</button>
        </body>
    </html>



    en el archivo ejemplo.txt escribe Hola Mundo y guardalo en el mismo directorio de index.html...
    1-El webBrowser tienes que crearlo tu WebBrowser wbNavegar = new WebBrowser();
    2-Un label que muestre el contenido del <div id="midiv"></div> cuando cargues el wbNavegar.
    3-Un button que ejecute la misma accion que el buttom(Ejecutar) de la web.
    4-Una vez ejecutado la accion que en el label cargue el nuevo contenido del <div id="midiv"></div>.

    ya no se que hacer, o sea si me muestra el contenido ya cargado del div, pero no entiendo pq tengo que darle click dos veces al boton para esto. No tome encuenta esto ultimo para que no se complique en el ejemplo.

    muchas gracias... y disculpa la demora
    domingo, 3 de diciembre de 2017 14:12