Problema con el seteo y uso de la propiedades de un combo

03/05/2006 - 16:59 por Alicia | Informe spam
Hola foro, tengo un problema que no encuentro la forma de arreglarlo, espero
que esto tenga solución
Yo tengo un form que tiene dos combos en los que uno depende de los valores
cargados en el otro. En load del form cargo los combos desde un dataset y
seteo las propiedades de ValueMember y DisplayMember de cada uno, hasta ahi
todo bien, pero mi problema suerge cuando yo en el evento
SelectedIndexChanged del combo principal le escribo el código necesario para
cargar el combo dependiente a ejecutar este form da error porque quiere
ejecutar este evento y todabia no se terminaron de setear las propiedades. El
Código que pongo es:
en el load del form
...
'Combo Aplicaciones
oAplicaciones = New oAPLICACIONES
DSAplicaciones = oAplicaciones.DataSet_Aplicaciones
cbAplicacion.DataSource = DSAplicaciones.Tables("Aplicaciones")
cbAplicacion.ValueMember = "ID_Aplicacion"
cbAplicacion.DisplayMember = "Aplicacion"

'Combo Funciones
oFunciones_X_Aplicacion = New oFUNCIONES_X_APLICACION
DSFunciones_X_Aplicacion =
oFunciones_X_Aplicacion.DataSet_Funciones_X_Aplicacion(0)
cbFuncion.DataSource =
DSFunciones_X_Aplicacion.Tables("Funciones_X_Aplicacion")
cbFuncion.ValueMember = "ID_Funcion"
cbFuncion.DisplayMember = "Funcion"
...

en el SelectedIndexChanged
Private Sub cbAplicacion_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cbAplicacion.SelectedIndexChanged
If cbAplicacion.SelectedIndex <> -1 Then
Dim ID_Aplicacion As Double =
DSAplicaciones.Tables("Aplicaciones").Rows(cbAplicacion.SelectedIndex).Item("ID_Aplicacion")
DSFunciones_X_Aplicacion =
oFunciones_X_Aplicacion.DataSet_Funciones_X_Aplicacion(ID_Aplicacion)
cbFuncion.DataSource =
DSFunciones_X_Aplicacion.Tables("Funciones_X_Aplicacion")
cbFuncion.ValueMember = "ID_Funcion"
cbFuncion.DisplayMember = "Funcion"
End If
End Sub

Esto tiene solución?
Gracias y hasta pronto
Uso Vb net Enterprice architect 2003

Preguntas similare

Leer las respuestas

#1 Alicia
03/05/2006 - 18:12 | Informe spam
Hola

"Carlos Gómez" escribió:

El problema surge cuando ejecuto el form y quiere ejecutar el evento
SelectedIndexChanged antes de terminar de cargar las propiedades del combo
principal, es decir
ejectu estas líneas
oAplicaciones = New oAPLICACIONES
DSAplicaciones = oAplicaciones.DataSet_Aplicaciones
cbAplicacion.DataSource = DSAplicaciones.Tables("Aplicaciones")
y cuando ejecuta esta va al evento y quiere ejecutarlo y ahi da error cuando
la líneas de código que siguen no se ejecutaron todabia

cbAplicacion.ValueMember = "ID_Aplicacion"
cbAplicacion.DisplayMember = "Aplicacion"

En este caso el orden de mis factores no altera el resultado
Gracias y hasta pronto

Alicia wrote:

> Hola foro, tengo un problema que no encuentro la forma de arreglarlo,
> espero que esto tenga solución
> Yo tengo un form que tiene dos combos en los que uno depende de los
> valores cargados en el otro. En load del form cargo los combos desde un
> dataset y seteo las propiedades de ValueMember y DisplayMember de cada
> uno, hasta ahi todo bien, pero mi problema suerge cuando yo en el evento
> SelectedIndexChanged del combo principal le escribo el código necesario
> para cargar el combo dependiente a ejecutar este form da error porque
> quiere ejecutar este evento y todabia no se terminaron de setear las
> propiedades.

Es decir, en el load del formulario primero cargas el combo principal y
después el combo secundario que es el enlazado.

¿y si lo haces al revés?: primero cargas el combo enlazado y después el
combo principal


Respuesta Responder a este mensaje
#2 Alicia
03/05/2006 - 18:18 | Informe spam
Retiro lo dicho, lo probe por las dudas y funciono!!!, realmente no entiendo
la lógica del Visual Basic Net
Gracias y hasta pronto.-


"Alicia" escribió:

Hola

"Carlos Gómez" escribió:

El problema surge cuando ejecuto el form y quiere ejecutar el evento
SelectedIndexChanged antes de terminar de cargar las propiedades del combo
principal, es decir
ejectu estas líneas
oAplicaciones = New oAPLICACIONES
DSAplicaciones = oAplicaciones.DataSet_Aplicaciones
cbAplicacion.DataSource = DSAplicaciones.Tables("Aplicaciones")
y cuando ejecuta esta va al evento y quiere ejecutarlo y ahi da error cuando
la líneas de código que siguen no se ejecutaron todabia

cbAplicacion.ValueMember = "ID_Aplicacion"
cbAplicacion.DisplayMember = "Aplicacion"

En este caso el orden de mis factores no altera el resultado
Gracias y hasta pronto

> Alicia wrote:
>
> > Hola foro, tengo un problema que no encuentro la forma de arreglarlo,
> > espero que esto tenga solución
> > Yo tengo un form que tiene dos combos en los que uno depende de los
> > valores cargados en el otro. En load del form cargo los combos desde un
> > dataset y seteo las propiedades de ValueMember y DisplayMember de cada
> > uno, hasta ahi todo bien, pero mi problema suerge cuando yo en el evento
> > SelectedIndexChanged del combo principal le escribo el código necesario
> > para cargar el combo dependiente a ejecutar este form da error porque
> > quiere ejecutar este evento y todabia no se terminaron de setear las
> > propiedades.
>
> Es decir, en el load del formulario primero cargas el combo principal y
> después el combo secundario que es el enlazado.
>
> ¿y si lo haces al revés?: primero cargas el combo enlazado y después el
> combo principal
>
>
Respuesta Responder a este mensaje
#3 Carlos Gómez
03/05/2006 - 19:08 | Informe spam
Alicia wrote:

Hola foro, tengo un problema que no encuentro la forma de arreglarlo,
espero que esto tenga solución
Yo tengo un form que tiene dos combos en los que uno depende de los
valores cargados en el otro. En load del form cargo los combos desde un
dataset y seteo las propiedades de ValueMember y DisplayMember de cada
uno, hasta ahi todo bien, pero mi problema suerge cuando yo en el evento
SelectedIndexChanged del combo principal le escribo el código necesario
para cargar el combo dependiente a ejecutar este form da error porque
quiere ejecutar este evento y todabia no se terminaron de setear las
propiedades.



Es decir, en el load del formulario primero cargas el combo principal y
después el combo secundario que es el enlazado.

¿y si lo haces al revés?: primero cargas el combo enlazado y después el
combo principal
Respuesta Responder a este mensaje
#4 Carlos Gómez
03/05/2006 - 21:54 | Informe spam
La explicación es sencilla:
Cuando cargas el primer combo, se produce el evento selectedIndexChanged, y
el evento se ejecuta inmediatamente, por lo que se pone a buscar en el
segundo combo y se produce la excepción.

Puedes verlo tranquilamente si pones dos puntos de interrupción:uno en la
siguiente línea que hay tras la orden de carga del primer combo, y el
segundo en el evento SelectedIndexChanged, y verás que siempre el programa
salta al evento, y tras completar la subrutina del evento continuará en el
segundo punto de interrupción.

Pero ¡vaya!, lo que te ha pasado es de lo más normal (o al menos yo también
caí en ese mismo problema). Con la práctica te vas dando cuenta que los
eventos se producen cuando les da la gana y no sólo cuando tu lo tienes
previsto, por lo que a veces el programa casca y no tienes ni idea del
porque y puede ser a que a saltado un evento (que no habías previsto) y a
modificado una variable global cuyo valor es 'delicado'.

Venga, encantado de ayudar.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida