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

Bloquear eventos de un textbox con c#

Estas en el tema de Bloquear eventos de un textbox con c# en el foro de .NET en Foros del Web. Hola a todos en el foro. Tengo el siguiente problema. Estoy leyendo un codigo desde una pistola lectora de multicodigos y trato de leer el ...
  #1 (permalink)  
Antiguo 18/08/2011, 09:12
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 0
Bloquear eventos de un textbox con c#

Hola a todos en el foro.

Tengo el siguiente problema. Estoy leyendo un codigo desde una pistola lectora de multicodigos y trato de leer el codigo de un carnet de identidad,, lo que pasa es que el codigo en total envia 5 eventos "enter", dos tabulaciones y el resto solo son caracteres.

Mi problema esta en que yo solo necesito la primera linea del codigo y desechar el resto, efectivamente capturo el codigo que necesito y realizo la operacion requerida, pero el resto de los eventos "enter" quedan encolados y se ejecutan igual con otros caracteres y se me cae la aplicacion.

Existe alguna forma de bloquear el resto de eventos o bien debo cambiar el evento KeyPress para realizar lo que necesito???

Adjunto el codigo que estoy ocupando para que entiendan mejor mi consulta.

Código C:
Ver original
  1. private void txt_buscarTrab_KeyPress(object sender, KeyPressEventArgs e)
  2.         {              
  3.             if (e.KeyChar == (char)Keys.Enter)
  4.             {
  5.                 //Thread.Sleep(1000);    
  6.                 if (enter == 0)
  7.                 {
  8.                     enter = 1;
  9.                     txt_buscarTrab.Enabled = false;                                                  
  10.                     GestionaOperacion();
  11.                 }
  12.                 else if (enter == 2)
  13.                 {
  14.                     e.KeyChar = (char)Keys.None;
  15.                     txt_buscarTrab.Text = string.Empty;
  16.                 }
  17.                 else
  18.                 {
  19.                     e.KeyChar = (char)Keys.None;
  20.                     enter++;
  21.                 }
  22.             }
  23.             else
  24.             {
  25.                 if (enter > 0) e.KeyChar = (char)Keys.None;
  26.             }
  27.         }

Ojala alguien pueda ayudarme.
  #2 (permalink)  
Antiguo 18/08/2011, 11:12
 
Fecha de Ingreso: agosto-2011
Ubicación: Buenos Aires
Mensajes: 78
Antigüedad: 12 años, 8 meses
Puntos: 10
Respuesta: Bloquear eventos de un textbox con c#

No entiendo bien lo de "bloquear". Pero con esta instrucción podés evitar que el manejador del evento se siga ejecutando:

Código C:
Ver original
  1. txtBuscar.KeyPress -= txt_buscarTrab_KeyPress;
__________________
www.orientadoanet.com
  #3 (permalink)  
Antiguo 18/08/2011, 11:28
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Bloquear eventos de un textbox con c#

Hola laguzzigerardo gracias por responder.

Mira lo que pasa es que como la captura a traves de la pistola me encola dos enter mas, se vuelve a ejecutar un procedimiento pero con valores erroneos.

Lo que necesito es que cuando se ejecute el primer enter, se bloqueen todos los restantes y luego volver a dejar activo el control, en este caso el tetbox.

Lo que tu me mencionas eliminara el evento KeyPress por toda la ejecucion de la aplicacion??, tendre que volver a incluir con new EventHandler el evento para que pueda ser utilizado nuevamente o no??

Quedo atento a tu respuesta.
  #4 (permalink)  
Antiguo 18/08/2011, 16:54
Avatar de othix  
Fecha de Ingreso: mayo-2011
Ubicación: Guatemala
Mensajes: 92
Antigüedad: 12 años, 10 meses
Puntos: 9
Respuesta: Bloquear eventos de un textbox con c#

Yo he trabajado con lectores de barras y los que he usado se configuran para la manera en que queres que lea la barra
__________________
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
  #5 (permalink)  
Antiguo 19/08/2011, 09:52
 
Fecha de Ingreso: junio-2006
Mensajes: 137
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Bloquear eventos de un textbox con c#

Hola othix, si yo tambien tenia entendido eso, pero el lector es un multicodigo, lee cualquier tipo de codigo de barras y de otros, ejemplo, con una licencia de conducir arroja solo un numero, pero con un carnet de identidad, lee un monton de caracteres, incluidos "enter" y tabuladores.

El tema esta en que solucione el problema, solo tenia que bloquear el cambio de foco del textbox manejando el evento LostFocus, y obligarlo a conservar el foco. El tema de los enter pude solucionarlo con el siguiente codigo, oajala a alguien le sirva.
Código C:
Ver original
  1. private void txt_buscarTrab_KeyPress(object sender, KeyPressEventArgs e)
  2.         {            
  3.             if (enter == 0)
  4.             {
  5.                 if (e.KeyChar == (char)Keys.Enter)
  6.                 {                                                
  7.                     enter++;                                                
  8.                     GestionaOperacion();                                                
  9.                 }
  10.                 else if (!char.IsNumber(e.KeyChar) && e.KeyChar != (char)Keys.K)
  11.                 {
  12.                     e.KeyChar = (char)Keys.None;
  13.                 }
  14.             }
  15.             else if (enter < 6)
  16.             {
  17.                 if (e.KeyChar == (char)Keys.Enter)
  18.                 {
  19.                     if (enter == 5)
  20.                     {
  21.                         e.KeyChar = (char)Keys.None;
  22.                         enter = 0;
  23.                         txt_buscarTrab.Text = string.Empty;
  24.                         return;
  25.                     }
  26.                     else
  27.                     {
  28.                         Thread.Sleep(1000);
  29.                         enter++;
  30.                     }
  31.                 }
  32.                 else if (!char.IsNumber(e.KeyChar))
  33.                 {
  34.                     e.KeyChar = (char)Keys.None;
  35.                 }
  36.             }                                        
  37.         }

Por mi parte mi problema queda solucionado. Muchas gracias a todos los que me orientaron y a los que se dieron el tiempo de leer, nos estamos viendo en algun otro post.

Chauz

Etiquetas: bloquear, eventos, net, textbox, aplicaciones
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 06:32.