none
Ayuda con manejo de Forms RRS feed

  • Pregunta

  • Hola Colegas... Una duda...

    tengo una aplicacion que manda llamar otra form en este caso fm.Show(); bueno cuando le doy clic al boton se abre... hasta aqui todo bien pero si la cierro la form2 y ejecuto de nuevo el boton me aparece un error...

    "No se puede establecer Visibility ni llamar a Show, ShowDialog o WindowInteropHelper.EnsureHandle después de haberse cerrado un elemento Window."

    Que se hace? Gracias Tios.


    Crysis

    • Cambiado Karen Malagón jueves, 21 de mayo de 2015 20:17 Windows Forms issue
    miércoles, 13 de mayo de 2015 7:25

Todas las respuestas

  • Hola, buenas.

    ¿Qué formulario es el que estás cerrando? Por el detalle que indicas, entiendo que el formulario principal es form2 y dentro de éste abres un formulario no modal llamado fm en el evento de un botón. A partir de ahí, que es lo que haces?

    Un saludo.


    When an answer is helpful, please vote as helpful, propose as answer and/or mark as answer

    miércoles, 13 de mayo de 2015 7:50
  • El form principal se llama mainwindows.... el form hijo es form 2... hay un boton del padre que manda llamar el hijo, pero si se abre el hijo y lo cierro y lo quiero mandar llamar otra vez con el boton me lanza el mensaje anterior citado... gracias

    Crysis

    miércoles, 13 de mayo de 2015 8:08
  • Hola.

    Tiene toda la pinta de que estas destruyendo el formulario, si pones el código de cómo lo cierras y del botón que lo abre te podremos ayudar mejor.

    Un saludo.


    Es de buena educación dar las gracias cuando te ayudan, si alguna respuesta te ha sido útil agradécelo marcándola como útil.

    miércoles, 13 de mayo de 2015 8:11
  • Hola Colegas... Una duda...

    tengo una aplicacion que manda llamar otra form en este caso fm.Show(); bueno cuando le doy clic al boton se abre... hasta aqui todo bien pero si la cierro la form2 y ejecuto de nuevo el boton me aparece un error...

    "No se puede establecer Visibility ni llamar a Show, ShowDialog o WindowInteropHelper.EnsureHandle después de haberse cerrado un elemento Window."

    Que se hace? Gracias Tios.


    Crysis

    Hola, 

    aqui indicas que abres un foumlario llamado fm con fm.Show() y luego hablas de form2. No entiendo tu casuistica

    Puedes poner el código de cómo abres y cierras los formularios?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 13 de mayo de 2015 8:14
  •  private void btnguardar_Click(object sender, RoutedEventArgs e)
            {
    form2 fm = new form2();
                    fm.ShowDialog();

            }

    teniendo en el form padre Boton Abrir

    si se abre.. pero si lo cierro (el form hijo osease el form2), y ejecutode nuevo  el boton  Abrir (del form padre) me truena con "No se puede establecer Visibility ni llamar a Show, ShowDialog o WindowInteropHelper.EnsureHandle después de haberse cerrado un elemento Window."

          

    Crysis

    miércoles, 13 de mayo de 2015 8:21
  • Tienes código en el evento Form_Closing de form2??

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 13 de mayo de 2015 8:34
  • Tambien te propongo una cosa. 

    En la barra de menu de Visual Studio selecciona Depurar/Excepciones/Marca la casilla Common Runtime. Esto provoca que en depuración, cuando haya una excepcion, la ejecución se detenga en la linea que la provoca. Así podemos afinar mas


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 13 de mayo de 2015 8:36
  • Hola,

    En WPF no es posible reutilizar formularios una vez cerrados.

    La mejor forma es suscribirte al evento Closing del formulario, y ahí manejar el evento y ocultar el formulario.

    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = true;
            this.Visibility = Visibility.Hidden;
        } 

    Una vez creado el formulario, lo ideal es trabajar con él gestionando su visibilidad.

    Échale un vistazo al siguiente enlace donde se indica este comportamiento en mayor detalle: http://stackoverflow.com/questions/3568233/wpf-cannot-reuse-window-after-it-has-been-closed

    Un saludo.


    When an answer is helpful, please vote as helpful, propose as answer and/or mark as answer

    miércoles, 13 de mayo de 2015 8:48
  • Hola, podria ser dos temas.

    1. Entiendo que creamos el fm.Show() ==> es el form2 osea que realmente haces form2.Show().

    2. Al cerrarlo se elimina el form (no haces un Hide()) entonces ya no existe. SUpongo que intentas llamar otra vez al form2.Show() sin crearlo otra vez??? osea no haces un new? puede que no tengas ese objeto ya y por eso da ese error.

    Prueba de crear otra vez el form 

    var form2 = new FormPrueba(); o como lo crees al picar el Botón.

    Si no intenta poner más código para echarte un cable.

    miércoles, 13 de mayo de 2015 12:35
  • hola

    >>No se puede establecer Visibility ni llamar a Show, ShowDialog o WindowInteropHelper.EnsureHandle después de haberse cerrado un elemento Window

    puedes identificar en que linea se genera el problema?  quiza analizar el stacktrace del exception

    porque creo que el error no se genera en el codigo que estas mostrando

    estas definiendo algun codigo en el constructor o en el Load del form2 ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 13 de mayo de 2015 13:10
  • Yo he solucionado este problema declarando el form en la clase e instanciandolo en el metodo. 

    Es decir tu tendras tu clase:

    public partial class Prueba : Form
        {

    form2 fm;

    ...

    }private void btnguardar_Click(object sender, RoutedEventArgs e)
            {
                   fm = new form2();
                    fm.ShowDialog();

            }

    Asi lo he probado yo y funciona sin problemas

    • Propuesto como respuesta Jk_rod miércoles, 27 de mayo de 2015 13:39
    lunes, 25 de mayo de 2015 14:38
  • Este código me ayudó amigo, sólo tengo una duda, cuando oculto una ventana WPF y cierro el MainWindow no se da por terminada la aplicación 

    ¿cómo puedo asegurarme de que se cierre por completo?

    Gracias.

    jueves, 3 de marzo de 2016 17:44
  • A mi me ha funcionado visibility, y ademas en wpf. Gracias !
    sábado, 27 de febrero de 2021 15:54