none
Conflicto de variables

    Pregunta

  • Tengan buenas noches, estoy aprendiendo a programar con VB.NET, estoy utilizando DEVEXPRESS, al quere ejecura un frmCliente de windows from me sale el siguiente error cuando ingreso datos y dar clic en el boton guardar.

    WithEvents variable 'ClientesBindingSource' entra en conflicto con WithEvents variable 'ClientesBindingSource' en la base class 'frmPlantilla' y se debe declarar como 'Shadows'.

    Agradecería sus apoyo para solucionarlo puesto que en el videotutorial en donde estoy aprendiendo no me da solucion.

    Gracias

    domingo, 16 de abril de 2017 2:23

Respuestas

  • "denis rengifo" escribió:

    > ... al quere ejecura un frmCliente de windows from me sale el siguiente
    > error cuando ingreso datos y dar clic en el boton guardar.
    >
    > WithEvents variable 'ClientesBindingSource' entra en conflicto con WithEvents
    > variable 'ClientesBindingSource' en la base class 'frmPlantilla' y se debe
    > declarar como 'Shadows'.

    Hola:

    Más que un "error", que no lo es, se trata de una ADVERTENCIA del compilador de Visual Basic, el cual te está diciendo que YA EXISTE una variable con el nombre 'ClientesBindingSource' declarada en la clase base (que se supone es el formulario llamado 'frmPlantilla'), por lo que si tu intención es DECLARAR y OCULTAR dicha variable en la clase heredada (en el formulario 'frmCliente'), tienes que declararla con el modificador Shadows, o bien, declararla en el formulario 'frmCliente' con otro nombre diferente a 'ClientesBindingSource'.

    Es decir, para que desaparezca la citada ADVERTENCIA, en el formulario 'frmCliente' tienes que declarar dicha variable como indico a continuación:

    Public Class frmCliente ' Hereda del formulario frmPlantilla Inherits frmPlantilla ' Indicamos explícitamente que somos conscientes de que queremos ' ocultar el miembro declarado en la clase base con el mismo nombre. ' Friend Shadows WithEvents ClientesBindingSource As BindingSource

    ' También le podemos establecer otro nombre diferente para que no
    ' exista ningún conflicto con la variable ClientesBindingSource
    ' existente en el formulario 'frmPlantilla'
    Friend WithEvents ClientesBindingSource2 As BindingSource

    End Class


    Ahora, la pregunta sería: ¿eres consciente de lo que significa "ocultar" un miembro de la clase base (frmPlantilla) para redefinirlo en la clase heredada (frmCliente)?

    Debes saber que en principio no tienes por qué "ocultar" ningún miembro declarado en la clase base con los modificadores Protected, Public o Friend, porque desde la clase 'frmCliente' puedes acceder perfectamente a dicho miembro declarado en la clase 'frmPlantilla', por lo que te diría que ELIMINARAS la declaración de la clase 'frmCliente'.

    Pero que si tu intención es "ocultar" dicho miembro, entonces tienes que declararlo en la clase 'frmCliente' con el modificador Shadows para que desaparezca la ADVERTENCIA, no el error, que estás obteniendo.

    Como lo más seguro es que hayas creado un origen de datos en el formulario 'frmPlantilla', te comento que la declaración de la variable ClientesBindingSource la podrás encontrar en el archivo 'frmPlantilla.Designer.vb', el cual se encuentra oculto por defecto en la ventana Explorador de soluciones de Visual Studio. Para ver los elementos ocultos del proyecto actual, debes hacer clic en el icono Mostrar todos los archivos existentes en la barra de herramientas de la ventana Explorador de soluciones.

    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.




    domingo, 16 de abril de 2017 8:35
    Moderador