none
COMO PUEDO COMPLEMENTAR O HACER CORRECTAMENTE ESTE CODIGO WPF C#

    Pregunta

  • Hola amigos espero se la esten pasando muy bien, el dia de hoy me gustaria de favor que si me podieran ayudar con este codigo que les proporcionare, lo que quiero lograr es obtener el WebBrowser de la pestaña selecionada atualmente del TabContol para que funcione mi boton de regresar o anterior pagina, dicho WebBrowser no quiero llamarlo por una variable si no mas bien obteniedo el navegador de la pestaña actual, les proporciono mi codigo saludos.

    //Obtenego el navegador de la pestaña seleccionada
    ((TabControl.SelectedItem) as WebBrowser).GoBack();

    Este codigo que les proporcione es lo que quiero lograr al final, el problema es que me da error al momento de hacer click en el boton este es el siguiente error que me sale

    Ese es un codigo, tengo otro codigo para obtener lo mismo(el navegador y la pestaña actual) este es el siguiente 

      //Obtenego el navegador de la pestaña seleccionada
      WebBrowser browser = sender as WebBrowser;
      // Obtengo la pestaña donde se encuentra el navegador
      TabItem tab = browser.Parent as TabItem;
      // Si la pestaña está seleccionado funcionara el boton atras en el webbrowser selecionado
      if (TabControl.SelectedItem.Equals(tab))
       //Boton atras
       browser.GoForward();

    este codigo tambien me da error  y es el siguiente

    Mi pregunta es ¿Me puedan ayudar de favor a solucionar el problema del codigo que ustedes crean que es el mas correcto? o  ¿Algun otro codigo que me quieran brindar para que funcione mi boton de atras?, sera de mucha ayuda, un gran saludo, gracias :) 

       

    sábado, 13 de enero de 2018 2:01

Respuestas

  • No tengo una buena solución para ti (yo lo que haría es usar una variable, que es precisamente lo que dices que no quieres hacer), pero sí te puedo explicar la razón por la que no está funcionando lo que haces, por si te sirve de ayuda para entender lo que pasa y poder mejorar el código.

    En el primer caso, haces esto:

    ((TabControl.SelectedItem) as WebBrowser).GoBack();

    Si el item que está seleccionado en el TabControl no es de tipo WebBrowser (o si no está seleccionado ningún item), entonces el operador "as" devuelve "null". Y por eso, al llamar a GoBack sobre el null da un error.

    En el segundo caso, ocurre algo parecido:

    WebBrowser browser = sender as WebBrowser;

    Si el "sender" no es un WebBrowser (y no lo será si ese código está en el "click" de un botón, el "sender" será el botón y no el WebBrowser), entonces una vez más el operador "as" devuelve null y por eso se produce el error que estás viendo.

    • Marcado como respuesta Christian CJ lunes, 15 de enero de 2018 4:30
    sábado, 13 de enero de 2018 9:55
    Moderador

Todas las respuestas

  • No tengo una buena solución para ti (yo lo que haría es usar una variable, que es precisamente lo que dices que no quieres hacer), pero sí te puedo explicar la razón por la que no está funcionando lo que haces, por si te sirve de ayuda para entender lo que pasa y poder mejorar el código.

    En el primer caso, haces esto:

    ((TabControl.SelectedItem) as WebBrowser).GoBack();

    Si el item que está seleccionado en el TabControl no es de tipo WebBrowser (o si no está seleccionado ningún item), entonces el operador "as" devuelve "null". Y por eso, al llamar a GoBack sobre el null da un error.

    En el segundo caso, ocurre algo parecido:

    WebBrowser browser = sender as WebBrowser;

    Si el "sender" no es un WebBrowser (y no lo será si ese código está en el "click" de un botón, el "sender" será el botón y no el WebBrowser), entonces una vez más el operador "as" devuelve null y por eso se produce el error que estás viendo.

    • Marcado como respuesta Christian CJ lunes, 15 de enero de 2018 4:30
    sábado, 13 de enero de 2018 9:55
    Moderador
  • muchas gracias por contestar, trabajare en elloa con lo que me has proporcionado, saludos
    lunes, 15 de enero de 2018 4:31