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

#1 frank
17/07/2006 - 09:35 | Informe spam
hola,

prueba de meter el llenado del combo en el load, dentro de cbo.BeginUpdate()
y cbo.EndUpdate();

saludos

"Cristian" escribió en el mensaje
news:
Mostrar la cita
y
Mostrar la cita
países
Mostrar la cita
en
Mostrar la cita
combobox
Mostrar la cita
un
Mostrar la cita
#2 Cristian
17/07/2006 - 21:37 | Informe spam
Frank:

Hice lo sugerido, pero no funciona, para verificarlo tengo un messagebox
desplegando el SelectedIndex del combo en el evento SelectedIndexChanged y me
muestra el mensaje tantas veces como registros se agregan al combo. :-(

¿será que el evento SelectedIndexChanged no es el apropiado?

Desde ya muchas gracias.

Saludos.
Cristian.

"frank" escribió:

Mostrar la cita
#3 David Sans
18/07/2006 - 09:49 | Informe spam
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:
Mostrar la cita
#4 frank
18/07/2006 - 10:11 | Informe spam
hola,

Tienes razón. BeginUpdate() y EndUpdate() solo afectan al repintado del
control.
puedes usar el evento SelectedChangeCommited() que sólo se dispara cuando el
usuario cambia el índice seleccionado.

Saludos

"Cristian" escribió en el mensaje
news:
Mostrar la cita
me
Mostrar la cita
cbo.BeginUpdate()
Mostrar la cita
principal
Mostrar la cita
implementado
Mostrar la cita
2000).
Mostrar la cita
por
Mostrar la cita
combo
Mostrar la cita
escoja
Mostrar la cita
países.
Mostrar la cita
#5 Cristian
18/07/2006 - 17:47 | Informe spam
Frank.

funcionó perfecto, justamente lo que buscaba y necesitaba.
Muchas gracias !.

Saludos.
Cristian.

"frank" escribió:

Mostrar la cita
Ads by Google
Search Busqueda sugerida