none
UserControl NO se actualiza RRS feed

  • Pregunta

  • Hola a Todos:

    Tengo un UserControl que utilizo en un windows form, este usercontrol tiene tres campos textbox, dos de entrada y uno de salida...

    Para obtener la salida utilizo la siguiente instrucción: Debug.WriteLine(UserControl11.OUT), y funciona...!!!

    Pero al ejecutar las siguientes instrucciones en en form, los campos in1 e in2 no se uctualizan en el user control:

            UserControl11.IN1 = "AAAAAAA"
            UserControl11.IN2 = "BBBBBBB"

    Por qué pasa esto...???

    Qué me falta hacer para que los campos del usercontrol se puedan actualizar desde el windowsform.


    Les dejo el código fuente del UC, y del WF.

    Public Class UserControl1
    
        Private _IN1 As String
        Private _IN2 As String
        Private _OUT As String
    
        Public Property IN1() As String
            Get
                Return _IN1
            End Get
            Set(ByVal value As String)
                _IN1 = value
            End Set
        End Property
    
        Public Property IN2() As String
            Get
                Return _IN2
            End Get
            Set(ByVal value As String)
                _IN2 = value
            End Set
        End Property
    
        Public Property OUT() As String
            Get
                Return _OUT
            End Get
            Set(ByVal value As String)
                _OUT = value
            End Set
        End Property
    
        Private Sub txtIN1_TextChanged(sender As Object, e As EventArgs) Handles txtIN1.TextChanged
            _IN1 = Me.txtIN1.Text
            _OUT = "X"
            Me.txtOUT.Text = _OUT
        End Sub
    
        Private Sub txtIN2_TextChanged(sender As Object, e As EventArgs) Handles txtIN2.TextChanged
            _IN2 = Me.txtIN2.Text
            _OUT = "Y"
            Me.txtOUT.Text = _OUT
        End Sub
    
    End Class
    Public Class Form1
    
        Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click
            UserControl11.IN1 = "AAAAAAA"
            UserControl11.IN2 = "BBBBBBB"
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Debug.WriteLine(UserControl11.OUT)
        End Sub
    
    End Class


    Lo que debería hacer es que los controles textbox in1 e in2 del usercontrol mostraran los valores AAAA y BBBB respectivamente, lo cual no ocurre.

    Muchas Gracias.

    Atte.

    pev


    pev

    viernes, 13 de abril de 2018 23:28

Respuestas

  • "pev" preguntó:

    > Efectivamente ahora se actualizan los controles del usercontrol, pero me queda una duda...
    >
    > Es necesario declarar y utilizar las siguientes variables privadas:
    >
    >    Private _IN1 As String
    >    Private _IN2 As String

    Como te indiqué en mi respuesta anterior, de esas dos variables (o mejor dicho, campos privados), te puedes olvidar, salvo que las utilices en otras partes de tu UserControl, porque las propiedades IN1 y IN2 devolverán y establecerán el valor que tenga la propiedad Text de sus correspondientes controles TextBox.

    >    Private _OUT As String

    Y en cuanto al campo _OUT, pues podrías hacer otro tanto de lo mismo:

        Public Property OUT() As String
            Get
                Return txtOut.Text
            End Get
            Set(ByVal value As String)
                txtOut.Text = value
            End Set
        End Property

    La propiedad OUT también devolverá y le asignará el valor que tenga la propiedad Text del control llamado txtOut.

    Piensa que las tres propiedades privadas que tienes declaradas las puedes sustituir por el valor Text de los correspondientes controles TextBox que tienes insertados en tu UserControl.


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta pev domingo, 15 de abril de 2018 0:37
    sábado, 14 de abril de 2018 19:01
    Moderador

Todas las respuestas

  • "pev" escribió:

    > Pero al ejecutar las siguientes instrucciones en en form, los campos in1 e in2 no
    > se uctualizan en el user control:
    >
    >     UserControl11.IN1 = "AAAAAAA"
    >     UserControl11.IN2 = "BBBBBBB"
    >
    > Por qué pasa esto...???

    Porque con ese código estás ASIGNANDO el valor de las propiedades IN1 y IN2 de tu control de usuario, pero en ningún caso estás modificando el valor de la propiedad Text de los controles TextBox llamados txtIN1 y txtIN2.

    > Qué me falta hacer para que los campos del usercontrol se puedan actualizar desde el windowsform.

    Olvidarte de los campos _IN1 e _IN2 declarados en el UserControl, y modificar los procedimientos de propiedad para que devuelven y asignen el valor de sus correspondientes controles TextBox:

        Public Property IN1() As String
            Get
                Return txtIN1.Text
            End Get
            Set(ByVal value As String)
                txtIN1.Text = value
            End Set
        End Property
    
        Public Property IN2() As String
            Get
                Return txtIN2.Text
            End Get
            Set(ByVal value As String)
                txtIN2.Text = value
            End Set
        End Property
    

    En negrita las modificaciones que debes de realizar.

    > Lo que debería hacer es que los controles textbox in1 e in2 del usercontrol
    > mostraran los valores AAAA y BBBB respectivamente, lo cual no ocurre.

    Una vez que hagas las modificación que te he comentado, observarás que ahora sí aparecen los valores  AAAA y BBBB en los controles txtIN1 y txtIN2 respectivamente. ;-)

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    sábado, 14 de abril de 2018 7:30
    Moderador
  • Muchas Gracias Enrique.

    Efectivamente ahora se actualizan los controles del usercontrol, pero me queda una duda...

    Es necesario declarar y utilizar las siguientes variables privadas:

        Private _IN1 As String
        Private _IN2 As String
        Private _OUT As String

    ...???

    Gracias Nuevamente.

    Atte.


    pev

    sábado, 14 de abril de 2018 18:35
  • "pev" preguntó:

    > Efectivamente ahora se actualizan los controles del usercontrol, pero me queda una duda...
    >
    > Es necesario declarar y utilizar las siguientes variables privadas:
    >
    >    Private _IN1 As String
    >    Private _IN2 As String

    Como te indiqué en mi respuesta anterior, de esas dos variables (o mejor dicho, campos privados), te puedes olvidar, salvo que las utilices en otras partes de tu UserControl, porque las propiedades IN1 y IN2 devolverán y establecerán el valor que tenga la propiedad Text de sus correspondientes controles TextBox.

    >    Private _OUT As String

    Y en cuanto al campo _OUT, pues podrías hacer otro tanto de lo mismo:

        Public Property OUT() As String
            Get
                Return txtOut.Text
            End Get
            Set(ByVal value As String)
                txtOut.Text = value
            End Set
        End Property

    La propiedad OUT también devolverá y le asignará el valor que tenga la propiedad Text del control llamado txtOut.

    Piensa que las tres propiedades privadas que tienes declaradas las puedes sustituir por el valor Text de los correspondientes controles TextBox que tienes insertados en tu UserControl.


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta pev domingo, 15 de abril de 2018 0:37
    sábado, 14 de abril de 2018 19:01
    Moderador
  • Gracias Enrique.


    pev

    domingo, 15 de abril de 2018 0:37