none
como saber si un formulario hijo se encuentra abierto para pasarle un dato a un textbox RRS feed

  • Pregunta

  • hola me gustaria saber como pasar el dato a un formulario que se encuentra abierto, en este caso un formulario hijo, si se encuentra abierto pasarle un valor a un textbox dentro de el
    jueves, 12 de noviembre de 2009 11:28

Respuestas

  • Hola, puedes hacer uso de la Application.OpenForms("nombre del formulario") si está dentro de dicha colección asignale el valor al textbox.
    Mi Blog: http://jtorrecilla.blogspot.es
    • Marcado como respuesta J. Miguel jueves, 12 de noviembre de 2009 12:52
    jueves, 12 de noviembre de 2009 11:45
    Moderador
  • Hola J.Miguel,

    como dice jtorrecilla, puedes detectar si un formulario está abierto o no con la lista Application.OpenForms.
    Si tu formulario se encuentra dentro de esta lista, significa que está abierto.
    Ahora bien, para pasarle un valor a un textbox tienes varias opciones:

    1.- Haces que el control textBox (o el que control que quieras) tenga visibilidad pública (es decir, que esté declarado como public, no como protected o private). Esto puedes cambiarlo en el archivo de diseño del formulario. Para ver este archivo, ves al explorador de soluciones, selecciona tu formulario y haz click en el botón + que aparece a su lado. Abre el archivo llamado XXX.Designer.vb. Ahi dentro busca la declaración del textBox (o el control que sea) y cambia su visibilidad (accesibilidad) de private a public. Esta es una opción aunque no es demasiado aconsejable.

    2.- Create una propiedad publica en tu clase que te permita modificar el Texto del TextBox. Algo como esto:

    Public Property EstableceTextoTextBox(Byval texto As String) As String

    Get
        Return TuTextBox.Text
    End Get

    Set
       TuTextBox.Text=Value
    End Set

    End Property

    esta opción es más elegante, desde mi punto de vista.


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta J. Miguel jueves, 12 de noviembre de 2009 12:52
    jueves, 12 de noviembre de 2009 11:55

Todas las respuestas

  • Hola, puedes hacer uso de la Application.OpenForms("nombre del formulario") si está dentro de dicha colección asignale el valor al textbox.
    Mi Blog: http://jtorrecilla.blogspot.es
    • Marcado como respuesta J. Miguel jueves, 12 de noviembre de 2009 12:52
    jueves, 12 de noviembre de 2009 11:45
    Moderador
  • Hola J.Miguel,

    como dice jtorrecilla, puedes detectar si un formulario está abierto o no con la lista Application.OpenForms.
    Si tu formulario se encuentra dentro de esta lista, significa que está abierto.
    Ahora bien, para pasarle un valor a un textbox tienes varias opciones:

    1.- Haces que el control textBox (o el que control que quieras) tenga visibilidad pública (es decir, que esté declarado como public, no como protected o private). Esto puedes cambiarlo en el archivo de diseño del formulario. Para ver este archivo, ves al explorador de soluciones, selecciona tu formulario y haz click en el botón + que aparece a su lado. Abre el archivo llamado XXX.Designer.vb. Ahi dentro busca la declaración del textBox (o el control que sea) y cambia su visibilidad (accesibilidad) de private a public. Esta es una opción aunque no es demasiado aconsejable.

    2.- Create una propiedad publica en tu clase que te permita modificar el Texto del TextBox. Algo como esto:

    Public Property EstableceTextoTextBox(Byval texto As String) As String

    Get
        Return TuTextBox.Text
    End Get

    Set
       TuTextBox.Text=Value
    End Set

    End Property

    esta opción es más elegante, desde mi punto de vista.


    En caso de que la respuesta te sirva, porfavor, márcala como válida

    Muchas gracias y suerte!


    Javier Jiménez Roda


    MCP (Microsoft Certified Professional)
    MCTS (Microsoft Certified Technology Specialist)
    MCPD (Microsoft Certified Professional Developer)
    Blog: http://jimenezroda.wordpress.com

    • Marcado como respuesta J. Miguel jueves, 12 de noviembre de 2009 12:52
    jueves, 12 de noviembre de 2009 11:55
  • hola

    si estas dentro del formulario que es IsMdiContainer=true tiene una propiedad de este que se llama

    Form. MdiChildren

    este te devuelve un array con todos los formularios hijos vinculador a este formulario

    podrias trabajar con esta propeidad que es de solo lectura, con esta propiedad podras detectar si esta abirto y tomar la instancia.

    luego necesitaras hacer uso de propiedades definida en el formulario hijo, algo ya te comento Javier, en el form hijo creas una propiedad publica


    Public Class Form2

        Private _texto As String

         Public Property Texto(Byval texto As String) As String
              Get
                Return _texto
              End Get

              Set
                  _texto =Value
              End Set

         End Property

         Public Sub Refresh()
        
              TextBox1.Text = Me.Texto
      
         End Sub

    End Class


    como veras a fiferencia de Javier no te aconsejo qeu en la propeidad asignes directo el valor, que la propeidad sea solo contenedora, utiliza algun metodo para procesar el Refresh de la info, es mas este refresh podrias aplicar ms logica, que la simple asignacion del valor a el TextBox, podrias lanzar validacion, cambiar el valor de otros campos, hacer recalculos, etc


    para usarlo harias


    Dim form As New Form2

    form.Text = "<valor>"
    form.Refresh()

    form.Show()


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 12 de noviembre de 2009 12:56