ComboBox - Principal / Secundario

17/07/2006 - 07:15 por Cristian | Informe spam
Estimados,

En un formulario windows hecho en VB.Net 2003 tengo 2 comboboxs; principal y
secundario.
Principal contiene (por ejemplo) los continentes, y el secundario los países
del continente seleccionado en el combobox principal.
La carga de "continentes" en el combobox principal lo tengo implementado en
el evento "load" del formulario de la siguiente manera.

cboPrin.DataSource = ds.Tables(0)
cboPrin.DisplayMember = ds.Tables(0).Columns(0).ColumnName
cboPrin.ValueMember = ds.Tables(0).Columns(0).ColumnName

Ademas tengo el evento "SelectedIndexChanged" para cargar los datos de
"Países" en el combobox secundario (de la misma forma que cargo el combobox
principal). Todo lo anterior con procedimientos almacenados (SQL 2000).

El problema es que en el evento load, al cargar el combobox principal, por
cada elemento que se "agrega" al combo, se ejecuta el evento
"SelectedIndexChanged" y se llena el combo secundario, o sea, para el
ejemplo, va 7 veces (por cada continente) a cargar los paises en el combo
secundario (se conecta 7 veces a la bd) y luego de eso se muestra el
formulario al usuario.

Quiero evitar que en la carga inicial (Load) se ejecute el evento
"SelectedIndexChanged". En otras palabras, quiero cargar sólo el combo
principal en la carga del formulario (que no se ejecute el
"SelectedIndexChanged" en el load dle frm), y que cuando el usuario escoja un
continente, sólo en ese momento se cargue el combo secundario de países.

Quedo atento a sus sugerencias.

Atte.
Cristian.

Preguntas similare

Leer las respuestas

#6 Cristian
18/07/2006 - 17:51 | Informe spam
David,

Muchas gracias por la ayuda.
Lo probé y funciona, sin embargo, opté por la solución que dió Frank, usando
el evento "SelectionChangeCommitted".

Mil gracias !

Saludos.
Cristian.

"David Sans" escribió:

Yo lo soluciono con una variable boolean que en el momento de llenar el primer combo. la pongo a true.
y en el SelectedIndexChanged del primer combo, compruebo si esta a true, si esta a true no busco los países.

Mas o menos así:

dim SeEstaLlenandoElCombo as boolean = false ' Flag de cargado combobox1.

en el load :

SeEstaLlenandoElCombo as boolean = True
cboPrin.DataSource = ds.Tables(0)
cboPrin.DisplayMember = ds.Tables(0).Columns(0).ColumnName
cboPrin.ValueMember = ds.Tables(0).Columns(0).ColumnName

SeEstaLlenandoElCombo as boolean = False


En el SelectedIndexChanged del combo 1:

if SeEstaLlenandoElCombo as boolean = False then
' cargado del segundo combobox.
end if


Un saludo
David Sans

"Cristian" escribió en el mensaje news:
> Estimados,
>
> En un formulario windows hecho en VB.Net 2003 tengo 2 comboboxs; principal y
> secundario.
> Principal contiene (por ejemplo) los continentes, y el secundario los países
> del continente seleccionado en el combobox principal.
> La carga de "continentes" en el combobox principal lo tengo implementado en
> el evento "load" del formulario de la siguiente manera.
>
> cboPrin.DataSource = ds.Tables(0)
> cboPrin.DisplayMember = ds.Tables(0).Columns(0).ColumnName
> cboPrin.ValueMember = ds.Tables(0).Columns(0).ColumnName
>
> Ademas tengo el evento "SelectedIndexChanged" para cargar los datos de
> "Países" en el combobox secundario (de la misma forma que cargo el combobox
> principal). Todo lo anterior con procedimientos almacenados (SQL 2000).
>
> El problema es que en el evento load, al cargar el combobox principal, por
> cada elemento que se "agrega" al combo, se ejecuta el evento
> "SelectedIndexChanged" y se llena el combo secundario, o sea, para el
> ejemplo, va 7 veces (por cada continente) a cargar los paises en el combo
> secundario (se conecta 7 veces a la bd) y luego de eso se muestra el
> formulario al usuario.
>
> Quiero evitar que en la carga inicial (Load) se ejecute el evento
> "SelectedIndexChanged". En otras palabras, quiero cargar sólo el combo
> principal en la carga del formulario (que no se ejecute el
> "SelectedIndexChanged" en el load dle frm), y que cuando el usuario escoja un
> continente, sólo en ese momento se cargue el combo secundario de países.
>
> Quedo atento a sus sugerencias.
>
> Atte.
> Cristian.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida