Principales respuestas
¿Hay forma de hacer lo siguiente con propiedades de objetos?

Pregunta
-
Suponiendo que tengo un control Panel llamado Panel1 y quiero variar la propiedad Left o Top de dicho control.
Como Left y Top tienen el mismo tipo de datos, ¿se puede referenciar a ambos desde un tercer objeto de manera que haga referencia a uno u otro?
------------------------------------------------------------------------------------------------
Algo así más o menos. Suponiendo que Tope referencie a Panel1.Left:
Tope = Panel1.Left (Esto asigna el valor de Left a Tope, pero supongan que no lo asigna, sino que lo referencia...
De manera que si digo:
Tope = 10
Panel1.Left adquiere el valor 10, y si digo:
Tope = Panel1.Top y asigno:
Tope = 15
Ahora Panel1.Top tiene el valor de 15
¿En otras palabras hay forma de referenciar ambas propiedades (Top y Left) indicándole a un tercer campo o propiedad que haga referencia a estas de manera que el valor asignado a Tope lo asigne a su vez a la propiedad que referencia Tope en ese momento, que puede ser una u otra?
Respuestas
-
Si se puede a eso se le llama crear un enlace entre propiedades la clase binding te crea un enlace entre la propiedad de un control y la propiedad de un objecto
- Editado DANTE-3D sábado, 24 de octubre de 2020 5:42 mejor informacion
- Marcado como respuesta James2016-2 sábado, 24 de octubre de 2020 15:31
-
Eso que quieres hacer funciona con las propiedades tipo-referencia, pero no funciona con las tipo-valor.
En el caso de Left y Top en el Panel, son tipo-valor, por lo que no tienes esa funcionalidad. Pero si lo haces con una clase tuya y usas tipos-referencia, sí que te funcionará lo de que al cambiar el valor de tu variable se cambie el valor de la propiedad que le asignaste. Pongamos un ejemplo:
Public Class MiTipoReferencia Public Property Valor As Integer End Class Public Class MiPanel Private mLeft As New MiTipoReferencia Public Property Left() As MiTipoReferencia Get Return mLeft End Get Set(ByVal value As MiTipoReferencia) mLeft = value End Set End Property Private mTop As New MiTipoReferencia Public Property Top() As MiTipoReferencia Get Return mTop End Get Set(ByVal value As MiTipoReferencia) mTop = value End Set End Property End Class '..... Dim pnl As New MiPanel Dim miValor As MiTipoReferencia miValor = pnl.Top miValor.Valor = 10 'Esto mete 10 en Top miValor = pnl.Left miValor.Valor = 20 'Esto mete 20 en Left
- Marcado como respuesta James2016-2 sábado, 24 de octubre de 2020 15:31
-
Deleted
- Marcado como respuesta James2016-2 sábado, 24 de octubre de 2020 15:31
Todas las respuestas
-
Si se puede a eso se le llama crear un enlace entre propiedades la clase binding te crea un enlace entre la propiedad de un control y la propiedad de un objecto
- Editado DANTE-3D sábado, 24 de octubre de 2020 5:42 mejor informacion
- Marcado como respuesta James2016-2 sábado, 24 de octubre de 2020 15:31
-
Eso que quieres hacer funciona con las propiedades tipo-referencia, pero no funciona con las tipo-valor.
En el caso de Left y Top en el Panel, son tipo-valor, por lo que no tienes esa funcionalidad. Pero si lo haces con una clase tuya y usas tipos-referencia, sí que te funcionará lo de que al cambiar el valor de tu variable se cambie el valor de la propiedad que le asignaste. Pongamos un ejemplo:
Public Class MiTipoReferencia Public Property Valor As Integer End Class Public Class MiPanel Private mLeft As New MiTipoReferencia Public Property Left() As MiTipoReferencia Get Return mLeft End Get Set(ByVal value As MiTipoReferencia) mLeft = value End Set End Property Private mTop As New MiTipoReferencia Public Property Top() As MiTipoReferencia Get Return mTop End Get Set(ByVal value As MiTipoReferencia) mTop = value End Set End Property End Class '..... Dim pnl As New MiPanel Dim miValor As MiTipoReferencia miValor = pnl.Top miValor.Valor = 10 'Esto mete 10 en Top miValor = pnl.Left miValor.Valor = 20 'Esto mete 20 en Left
- Marcado como respuesta James2016-2 sábado, 24 de octubre de 2020 15:31
-
Deleted
- Marcado como respuesta James2016-2 sábado, 24 de octubre de 2020 15:31
-
-
-
Gracias por levantar tu consulta en los foros de MSDN. Cerraremos el Hilo, por ende si tiene alguna otra consulta por favor genera otra consulta para que la comunidad de foros te pueda asesorar.
Siempre es un placer atender tus consultas!
--------------------------------------------------------------------------------
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Si tiene algún cumplido o reclamo sobre el soporte de MSDN sientase en la libertad de contactar MSDNFSF@microsoft.com.