2011-06-06 4 views
6

Medio Ambiente

  • Windows XP x32 Visual Studio 2005 Standard Edition
  • Honeywell Dolphin 9500 con Windows Mobile 2003 (Pocket PC 2003) con una función de escáner de código de barras y B & cámara W El uso de su SDK encuentra here.
  • .NET Compact Framework 1.0 SP3 y .NET Framework 1.1
  • usando VC#

Meta

tengo un control ListView con CheckBoxes = true y View = Details en un formulario, pero no quiero que la las casillas de verificación son "comprobables" por el usuario. Lo estoy usando para una visualización de estado de finalización de registro. Sin embargo, deseo utilizar la función del controlador de eventos para marcar la casilla mediante el código (es decir, al completar el registro: lvMeters_ItemCheck(null, null);).¿Cómo puedo mantener un control de vista de lista C# con casillas de verificación de "Verificar" en la selección de filas?

Problema

He inhabilitado el control de la caja en sí (creo, la pantalla táctil no es real y precisa en este dispositivo). Sin embargo, al seleccionar una fila (tengo FullRowSelect = true), el control a menudo marca la casilla de verificación y parece que no se está llamando al controlador de eventos.

Cosas que me han tratado

intenté deshacer básicamente la acción del controlador de eventos:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 
    if (sender is ListView) 
    { 
     if (e.CurrentValue == CheckState.Checked) 
      lvMeters.Items[e.Index].Checked = true; 
     else 
      lvMeters.Items[e.Index].Checked = false; 
    } 
    else if (e.CurrentValue == CheckState.Checked) 
     lvMeters.Items[e.Index].Checked = false; 
    else 
     lvMeters.Items[e.Index].Checked = true; 
} 

El problema es el controlador anterior no ser llamado en una vista de lista seleccionar, ni la El controlador de eventos SelectedItemChanged llama a este controlador de eventos pero aún está marcando el cuadro en select. Se llama cuando se marca la casilla.

¿Necesita información adicional?

¡Pregúntame y haré mi mejor esfuerzo!

Yo soy un principiante

tan sienten libres de decirme que estoy haciendo esto completamente mal y debe hacer toda la cosa de manera diferente.

+2

+1 para un muy bien formateado/pensado pregunta – ctacke

Respuesta

0

Suspiro ... De alguna manera logré quitar el controlador de eventos del control cuando se confundía con el diseñador. Lo revisé en algún momento y todavía estaba allí, pero en ese momento yo realmente tenía un problema de lógica/código.

Gracias por sus respuestas:/

0

No estoy familiarizado con los límites de ListView en el marco compacto, pero en el marco estándar, puede usar la propiedad TreeNode.StateImageIndex. Los estados no verificados/comprobados están de hecho usando imágenes pequeñas incrustadas en el código de winforms estándar (si no recuerdo mal, son el índice 1 y 2). Así, por ejemplo, si usted hace esto:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 
    e.Item.StateImageIndex = 3; 
} 

que va a cambiar el pequeño icono y configurarlo para nada. También puede usar ListView ImageList.

+0

El problema es que mi función de controlador de eventos lvMeters_ItemCheck no está siendo llamado a menos que explícitamente clic en la parte de casilla de verificación de cada elemento en el ListView. Si hago clic en una parte del ítem en otra columna, no llama al manejador, pero con frecuencia marca la casilla. –

Cuestiones relacionadas