none
Ejecutar evento (SelectedIndexChanged ) de un ComboBox en el Load de un formulario RRS feed

  • Pregunta

  • Buenas noches compañeros, tengo una duda sobre ejecutar el evento SelectedIndexChanged de un ComboBox en el evento Load de un formulario. Lo que pasa es que que como lo mencione se ejecute el còdigo de dicho evento del ComboBox y lo logro hacer de dos maneras pero quisiera que me dijeran cual de las dos es la mas correcta o que diferecnias existe entre una y otra. Les pongo el còdigo que utilizo para invocar el evento SelectedIndexChanged  de un ComboBox llamado COM_DIRECCIONMOMENTO de las dos maneras:

    Forma 1:

    'Llama al procedimietno COM_DIRECCIONMOMENTO_SelectedIndexChanged(Nothing, Nothing), con el fin
            'de actualizar y asignar la imagen al PictureBox PIC_MOMENTO
    
            COM_DIRECCIONMOMENTO_SelectedIndexChanged(Nothing, Nothing)

    Forma 2:

    'Llama al procedimietno COM_DIRECCIONMOMENTO_SelectedIndexChanged(sender, e), con el fin
            'de actualizar y asignar la imagen al PictureBox PIC_MOMENTO

            COM_DIRECCIONMOMENTO_SelectedIndexChanged(sender, e)
    Cual de las dos es la más correcta, que observación me dan al respecto?
    domingo, 30 de marzo de 2014 1:01

Respuestas

  • "Harold Quintero Pineda" preguntó:

    > tengo una duda sobre ejecutar el evento SelectedIndexChanged de un ComboBox
    > en el evento Load de un formulario.
    >
    > Les pongo el còdigo que utilizo para invocar el evento SelectedIndexChanged
    > de un ComboBox llamado COM_DIRECCIONMOMENTO de las dos maneras:
    >
    > Forma 1:
    > COM_DIRECCIONMOMENTO_SelectedIndexChanged(Nothing, Nothing)
    >
    > Forma 2:
    > COM_DIRECCIONMOMENTO_SelectedIndexChanged(sender, e)
    >
    > Cual de las dos es la más correcta, que observación me dan al respecto?

    Si la llamada al evento SelectedIndexChanged del control ComboBox la efectuas en el evento Load del formulario, digamos que la manera correcta de hacerlo es la primera

        COM_DIRECCIONMOMENTO_SelectedIndexChanged(Nothing, Nothing)

    porque si bien funciona correctamente la segunda, debes saber que al primer parámetro del procedimiento (sender) le estás enviando un objeto Form, cuando lo correcto sería pasarle la referencia del propio control ComboBox que vas a utilizar o un valor Nothing, si no te hace falta la referencia del control:

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

            COM_DIRECCIONMOMENTO_SelectedIndexChanged(COM_DIRECCIONMOMENTO, Nothing)

        End Sub

    Se comprende que el control ComboBox se llama COM_DIRECCIONMOMENTO.

    Aunque también entiendo que lo mejor sería NO LLAMAR directamente a cualquier evento de los controles, ni de la primera ni de la segunda manera, ya que los eventos se deberían de desencadenar automáticamente cuando se produzca una acción concreta, que para el caso del evento SelectedIndexChanged del control ComboBox, se ejecutaría cuando se modifique el valor de su propiedad SelectedIndex.

    Si tu necesitas ejecutar el código existente en el evento SelectedIndexChanged, bien cuando cambie el valor de la propiedad SelectedIndex o cuando lo estimes conveniente, lo que tienes que hacer es crearte un procedimiento concreto, al cual llamarás desde el propio evento SelectedIndexChanged, desde el evento Load del formulario, o desde donde lo creas necesario:

        Private Sub NombreProcedimiento()
    
           ' Ejecutar el código necesario
    
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            ' Llamamos al siguiente procedimiento
            NombreProcedimiento()
    
        End Sub
    
        Private Sub COM_DIRECCIONMOMENTO_SelectedIndexChanged(sender As Object, e As EventArgs) Handles COM_DIRECCIONMOMENTO.SelectedIndexChanged
    
            ' Llamamos al siguiente procedimiento
            NombreProcedimiento()
    
        End Sub

    Al menos así es como yo entiendo que se debería de hacer. ;-)

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    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, 30 de marzo de 2014 6:53
    Moderador

Todas las respuestas

  • "Harold Quintero Pineda" preguntó:

    > tengo una duda sobre ejecutar el evento SelectedIndexChanged de un ComboBox
    > en el evento Load de un formulario.
    >
    > Les pongo el còdigo que utilizo para invocar el evento SelectedIndexChanged
    > de un ComboBox llamado COM_DIRECCIONMOMENTO de las dos maneras:
    >
    > Forma 1:
    > COM_DIRECCIONMOMENTO_SelectedIndexChanged(Nothing, Nothing)
    >
    > Forma 2:
    > COM_DIRECCIONMOMENTO_SelectedIndexChanged(sender, e)
    >
    > Cual de las dos es la más correcta, que observación me dan al respecto?

    Si la llamada al evento SelectedIndexChanged del control ComboBox la efectuas en el evento Load del formulario, digamos que la manera correcta de hacerlo es la primera

        COM_DIRECCIONMOMENTO_SelectedIndexChanged(Nothing, Nothing)

    porque si bien funciona correctamente la segunda, debes saber que al primer parámetro del procedimiento (sender) le estás enviando un objeto Form, cuando lo correcto sería pasarle la referencia del propio control ComboBox que vas a utilizar o un valor Nothing, si no te hace falta la referencia del control:

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

            COM_DIRECCIONMOMENTO_SelectedIndexChanged(COM_DIRECCIONMOMENTO, Nothing)

        End Sub

    Se comprende que el control ComboBox se llama COM_DIRECCIONMOMENTO.

    Aunque también entiendo que lo mejor sería NO LLAMAR directamente a cualquier evento de los controles, ni de la primera ni de la segunda manera, ya que los eventos se deberían de desencadenar automáticamente cuando se produzca una acción concreta, que para el caso del evento SelectedIndexChanged del control ComboBox, se ejecutaría cuando se modifique el valor de su propiedad SelectedIndex.

    Si tu necesitas ejecutar el código existente en el evento SelectedIndexChanged, bien cuando cambie el valor de la propiedad SelectedIndex o cuando lo estimes conveniente, lo que tienes que hacer es crearte un procedimiento concreto, al cual llamarás desde el propio evento SelectedIndexChanged, desde el evento Load del formulario, o desde donde lo creas necesario:

        Private Sub NombreProcedimiento()
    
           ' Ejecutar el código necesario
    
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            ' Llamamos al siguiente procedimiento
            NombreProcedimiento()
    
        End Sub
    
        Private Sub COM_DIRECCIONMOMENTO_SelectedIndexChanged(sender As Object, e As EventArgs) Handles COM_DIRECCIONMOMENTO.SelectedIndexChanged
    
            ' Llamamos al siguiente procedimiento
            NombreProcedimiento()
    
        End Sub

    Al menos así es como yo entiendo que se debería de hacer. ;-)

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    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, 30 de marzo de 2014 6:53
    Moderador
  • Señor Enrique la verdad agradecido con su respuesta, la he entendido perfectamente.
    domingo, 30 de marzo de 2014 15:07
  • Muchas Gracias 
    sábado, 20 de julio de 2019 1:00