2010-07-10 42 views
8

Necesito convertir int y bool o al checkStateCómo convertir int o bool a checkState

int ValueCheck;  
private void gsCheck1_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox box = sender as CheckBox; 
    box.CheckState = ValueCheck; // doesn't work 
    this.gsCheck2.CheckState = ValueCheck; // should be 1 or 0 ? 
} 

Como se puede ver que quiero cambiar CheckState (this.gsCheck2) por changeing (this.gsCheck1) CheckState y terminan con un valor entero que es necesario.

actualización .... problema resuelto

private int ValueCheck(CheckState Check) 
{ 
    if (Check == CheckState.Checked) 
     return 1; 
    else 
     return 0; 
} 


private void gs_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox box = sender as CheckBox; 
    MessageBox.Show(box.Name + "="+ ValueCheck(box.CheckState).ToString()); 
} 

Respuesta

12
  • Considere CheckBox.Checked que es la propiedad booleana.
  • Use box.CheckState = (CheckState)ValueCheck;
  • También puede usar el ?: operator.

actualización de acuerdo con los comentarios:

sea para declarar un ValueCheck como CheckState:

CheckState ValueCheck; 
private void.... 

O convertir el valor int a un valor CheckState:

this.gsCheck2.CheckState = (CheckState)ValueCheck; 

detrás el molde el valor CheckState para int:

CheckState cs = box.CheckState; 
int ValueCheck = (int)cs; 
string result = "Current state: " + ValueCheck + cs.ToString(); 

//You question: 
MessageBox.Show(box.Name + (int)box.CheckState); 

actualización
su información, en lugar de escribir el método ValueCheck, hay un operador de C# ?: operator he mencionado anteriormente, que se puede hacer:

int result = box.CheckState == CheckState.Checked ? 1 : 0; 

que es una traducción de:

int result; 
if (box.CheckState == CheckState.Checked) 
    result = 1; 
else 
    result = 0; 
+0

no puedo utilizar CheckBox.Checke –

+0

Por qué no puede usted, por favor explicar y vamos a tratar de buscar una mejor opción. – Shimmy

+0

He editado mi pregunta, por favor, eche un vistazo. –

1

Parece ValueCheck debe ser 1 o 0 que representa true y false respectivamente, en cuyo caso usted sh Ould utilizar este:

this.gs_check2.Checked = ValueCheck == 1; 

EDIT: Gracias a tu comentario parece lo que quiere es la siguiente:

CheckState state = (CheckState)this.ValueCheck; 
box.CheckState = state; 
this.gsCheck2.CheckState = state; 

Sin embargo tenga en cuenta que podría ser posible que ValueCheck podría contener un valor no válido para el CheckState enumeración .

+0

this.gs_check2.Checked = ValueCheck; no funciona –

+0

Dijo ==, not =. – Shimmy

+0

ValueCheck ya tiene un valor positivo o negativo, entonces ¿por qué == 1; –

3

¿Realmente necesita CheckedState que también cubra el estado "parcial" verificado que algunos CheckBox pueden tener, o simplemente está buscando un camino sin escribir un montón de declaraciones IF para aplicar valores hacia y desde CheckBoxes? Si es así, ¿ha considerado usar ConvertTo?

Para activar un 0 o un 1 a un valor lógico que se puede asignar a un CheckBox:

CheckBox1.Checked = Convert.ToBoolean(0);  // False - Not checked. 
CheckBox1.Checked = Convert.ToBoolean(1); // True - checked. 

O para activar de forma fiable la característica sea comprobada de una casilla de verificación en un 1 o 0:

int result = Convert.ToInt32(CheckBox1.Checked); 
2

Usted puede también probar este

int ValueCheck=Convert.ToByte(chk.Checked) 
0

CheckState enumeración tiene siguientes valores:

CheckState.Unchecked = 0, 
CheckState.Checked = 1, 
CheckState.Indeterminite = 2 

Si almacena sus valores como bit de valor nulo en su base de datos, esto corresponde a bool? Cª#.

Escribí los siguientes métodos estáticos de ayuda para conversiones útiles entre bool? y CheckState

public static bool? ConvertCheckStateToNullableBool(CheckState input) 
     { 
      switch (input) 
      { 
       case CheckState.Unchecked: 
        return false; 
       case CheckState.Checked: 
        return true; 
       //case CheckState.Indeterminate: 
       // return null; 
      } 
      return null; 
     } 

     public static CheckState ConvertBoolToCheckState(bool? input) 
     { 
      switch (input) 
      { 
       case false: 
        return CheckState.Unchecked; 
       case true: 
        return CheckState.Checked; 
        //case null: 
        // return CheckState.Indeterminate; 
      } 
      return CheckState.Indeterminate; 
     }