none
Como lo hago? RRS feed

  • Pregunta

  • Tengo una pregunta como puedo hacer que cuando este en un form en c# sharp los botones que bloqueé se queden bloqueados al regresar al mismo form pero desde otro, hasta donde sé se pierde gracias al  Form1 hola = new form1 (); se pierde por el "new", y no se como hacer para que no se desbloqueé y no pierda los datos.
    • Editado Jostin Arana sábado, 3 de septiembre de 2016 3:21
    • Cambiado Laura Ceglz martes, 6 de septiembre de 2016 15:48
    sábado, 3 de septiembre de 2016 3:21

Todas las respuestas

  • Veo un pequeño conflicto: Has puesto la pregunta en el foro de ASP.NET, pero luego dices que haces Form1 hola = new Form1(), cosa que solo se hace en Winforms; en WebForms nunca necesitas instanciar el formulario porque la infraestructura lo hace automáticamente al navegar a él. La distinción es importante porque la forma de resolverlo es muy distinta en WebForms y en WinForms.

    Suponiendo que sea un WebForm (ya que preguntaste en ASP.NET), la razón por la que se pierde el Enable de los botones es porque se guarda en el ViewState, y el ViewState se conserva en un input hidden en el form, y por lo tanto se pierde cuando navegas a otro form. La solución es preservarlo en el Session en lugar de confiar en el mecanismo predeterminado que se basa en el ViewState. No hay una forma automática que te lo haga sin programar; cada vez que habilites o deshabilites un botón tendrás que copiar ese valor a una variable que guardarás en el Session, y luego en el Page_Load tendrás que leer esas variables del Session y volverles a meter el valor a los botones.

    Si por el contrario es un WinForm, entonces el truco es hacer el new del form una única vez la primera vea, y luego conservar esa variable que has llamado "hola" (por ejemplo, haciéndola estática). Luego a ese hola le haces .Hide() y .Show() para mostrar y ocultar el form, sin llamar nunca al Close(), y así no se te pierde la configuración que dejaste la última vez. Si estás trabajando con Winforms y tienes más dudas, entonces pregunta en el foro correspondiente en lugar del de asp.net.

    • Propuesto como respuesta Laura Ceglz lunes, 5 de septiembre de 2016 21:14
    sábado, 3 de septiembre de 2016 6:22
  • hola

    entiendo se trata de un desarrollo winform y no web

    para comunicar forms no puedes usar el new, sino que debes usar la instancia existente

    Comunicar Formularios

    debes aplicar la tecnica que comento en el articulo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Laura Ceglz lunes, 5 de septiembre de 2016 21:14
    lunes, 5 de septiembre de 2016 10:25