Foros del Web » Programación para mayores de 30 ;) » .NET »

Eventos en Aplicaciones Windows, Que tecnica utilizas??

Estas en el tema de Eventos en Aplicaciones Windows, Que tecnica utilizas?? en el foro de .NET en Foros del Web. Bueno, abro este post para que sirva de alguna manera... Por poner un ejemplo... Bueno es referente a que programas para windows (windows forms) surgen ...
  #1 (permalink)  
Antiguo 23/10/2006, 08:37
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Eventos en Aplicaciones Windows, Que tecnica utilizas??

Bueno, abro este post para que sirva de alguna manera...

Por poner un ejemplo...

Bueno es referente a que programas para windows (windows forms) surgen muchos problemas con los eventos es decir... por ejemplo: tienes un combobox que deve llenarse de datos y cuando le pones el .DataSource el control empieza a meter los datos pero al mismo tiempo se ejecuta su evento selectedIndexchanged que a su ves requiere del valor seleccionado del mismo combo para llenar datos en otro combo, al llenar los datos del otro combo tambien a este se le ejecuta el selectedIndexChanged que a su ves tal combo llena los datos de un datagridview que a su vez, al llenarse de datagridview se ejecuta el evento SelectionChanged... y blah blah...

Es decir... tratar de llenar datos, se ejecutan una serie de eventos que pueden probocar que nuestro codigo truene!!

Bueno, la tecnica que uso yo para arreglar este problema es, quitar el manejador (System.EventHandler) a los controles antes de ponerles el .DataSource, para asegurar que se llenen de datos sin que se disparen los eventos que hayamos implementado...

es decir:
Si tengo un combobox, y cuando le pongo .Datasource, es decir..

cmbProductos.DisplayMember = "Nombre";
cmbProductos.ValueMember = "IdProducto";
cmbProductos.DataSource = mids.tables("Productos");

Al hacer esto, se ejecuta el cmbProductos_SelectedIndexChanged automatico,.. pero yo no quiero que se ejecute en este momento por que yo solo quiero meter datos y ya!!!

Entonces, quitamos el manejador.. (-=)

cmbProductos.DisplayMember = "Nombre";
cmbProductos.ValueMember = "IdProducto";

//Quitamos el manejador de eventos...

this.cmbProductos.SelectedIndexChanged -= new System.EventHandler(this.cmbProductos_SelectedInde xChanged);

cmbProductos.DataSource = mids.tables("Productos");

//Y respues lo restauramos

this.cmbProductos.SelectedIndexChanged += new System.EventHandler(this.cmbProductos_SelectedInde xChanged);

Por cierto, aqui se ve muy rustico el quitar y agregar el manejador.. yo suelo poner rutinas como RemoveHandler_cmbProductos() y AddHandler_cmbProductos() en las cuales pondria lo de this.cmbProductos.SelectedIndexChanged -= new System.EventHandler(this.cmbProductos_SelectedInde xChanged);
y this.cmbProductos.SelectedIndexChanged += new System.EventHandler(this.cmbProductos_SelectedInde xChanged);

Bueno... creo que esta tecnica es buena, me ha ayudado a resolver el problema de los eventos que se disparan en cadena..

pues me gustaria saber su alguien utiliza una tecnica diferente a esta...
espero sus comentarios...

saludos
  #2 (permalink)  
Antiguo 23/10/2006, 09:36
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Bueno, no es que se ejecute el SelectedIndexChanged al poner el datasource.. es tan solo un ejemplo...
  #3 (permalink)  
Antiguo 24/10/2006, 08:47
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
que pex, donde esta la cooperacion de los foreros, pareciera que solo entran a preguntar por sus problemas y no aportan nada, que pasa con ustedes foreros, la idea principal de esto es colaborar, la verdad, esto es decepcionante...
  #4 (permalink)  
Antiguo 24/10/2006, 11:27
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Hola que tal Stream, no se me esponje, es que estamos en stand by, jajaja, no habia entrado desde hace un buen, pues fijate una cosa, yo no me habia percatado de eso, de eludir en cierto momento el event handler de los objetos pero en este caso hay propiedades para pasar por alto a los eventos, en mi caso yo uso el addhandler cuando estoy en VB, ya que en C# apenas estoy chavo, jejeje, y, en este caso, para evitar el uso a lo bestia de la memoria pues voy creando los controles dependiendo del evento que se este ejecutando, que opinas?, y sabes, que bueno que escribes esto por que tengo una aplicacioncilla que me tarda mucho en entrar asi que voy a seguir tus pies...
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #5 (permalink)  
Antiguo 30/01/2008, 10:54
Avatar de Angel K ido  
Fecha de Ingreso: febrero-2007
Mensajes: 48
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Eventos en Aplicaciones Windows, Que tecnica utilizas??

Cita:
Iniciado por Stream Ver Mensaje
Bueno, abro este post para que sirva de alguna manera...

Por poner un ejemplo...

Bueno es referente a que programas para windows (windows forms) surgen muchos problemas con los eventos es decir... por ejemplo: tienes un combobox que deve llenarse de datos y cuando le pones el .DataSource el control empieza a meter los datos pero al mismo tiempo se ejecuta su evento selectedIndexchanged que a su ves requiere del valor seleccionado del mismo combo para llenar datos en otro combo, al llenar los datos del otro combo tambien a este se le ejecuta el selectedIndexChanged que a su ves tal combo llena los datos de un datagridview que a su vez, al llenarse de datagridview se ejecuta el evento SelectionChanged... y blah blah...

Es decir... tratar de llenar datos, se ejecutan una serie de eventos que pueden probocar que nuestro codigo truene!!

Bueno, la tecnica que uso yo para arreglar este problema es, quitar el manejador (System.EventHandler) a los controles antes de ponerles el .DataSource, para asegurar que se llenen de datos sin que se disparen los eventos que hayamos implementado...

es decir:
Si tengo un combobox, y cuando le pongo .Datasource, es decir..

cmbProductos.DisplayMember = "Nombre";
cmbProductos.ValueMember = "IdProducto";
cmbProductos.DataSource = mids.tables("Productos");

Al hacer esto, se ejecuta el cmbProductos_SelectedIndexChanged automatico,.. pero yo no quiero que se ejecute en este momento por que yo solo quiero meter datos y ya!!!

Entonces, quitamos el manejador.. (-=)

cmbProductos.DisplayMember = "Nombre";
cmbProductos.ValueMember = "IdProducto";

//Quitamos el manejador de eventos...

this.cmbProductos.SelectedIndexChanged -= new System.EventHandler(this.cmbProductos_SelectedInde xChanged);

cmbProductos.DataSource = mids.tables("Productos");

//Y respues lo restauramos

this.cmbProductos.SelectedIndexChanged += new System.EventHandler(this.cmbProductos_SelectedInde xChanged);

Por cierto, aqui se ve muy rustico el quitar y agregar el manejador.. yo suelo poner rutinas como RemoveHandler_cmbProductos() y AddHandler_cmbProductos() en las cuales pondria lo de this.cmbProductos.SelectedIndexChanged -= new System.EventHandler(this.cmbProductos_SelectedInde xChanged);
y this.cmbProductos.SelectedIndexChanged += new System.EventHandler(this.cmbProductos_SelectedInde xChanged);

Bueno... creo que esta tecnica es buena, me ha ayudado a resolver el problema de los eventos que se disparan en cadena..

pues me gustaria saber su alguien utiliza una tecnica diferente a esta...
espero sus comentarios...

saludos
Deberías probar algo así:

Cita:
cbComboBox.Enabled = false;
cbComboBox.DataSource = dsBaseDeDatos.Tables[strNombreDeTabla];
cbComboBox.Enabled = true;
  #6 (permalink)  
Antiguo 21/05/2008, 06:37
 
Fecha de Ingreso: mayo-2006
Mensajes: 2
Antigüedad: 18 años
Puntos: 0
Respuesta: Eventos en Aplicaciones Windows, Que tecnica utilizas??

Pues la verdad es que he probado el método de cambiar la propiedad Enabled, y los eventos seguían lanzándose y ejecutándose sus manejadores. Con el método de Stream sí he logrado impedirlo.

Muchas gracias por compartir vuestras técnicas.

Última edición por agfralo; 21/05/2008 a las 06:42
  #7 (permalink)  
Antiguo 22/01/2009, 07:38
Avatar de Porlachucha  
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: Eventos en Aplicaciones Windows, Que tecnica utilizas??

buen dato stream... justamente tengo el problema, el cual resuelvo al dispararse el evento SelectedIndexChanged del control, preguntando si el item seleccionado es distinto a -1
cbFormasPago.SelectedIndex != -1. Aunque tiene un comportamiento extraño cuando por accidente el usuario borra el valor del control, y cambia el focoo del mismo.
voy a revisar tu truco, a ver que tal.
Saludos
Plch
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:01.