2010-07-10 15 views
8

trzeba konwertować int a lub bool do checkStateJak przekonwertować int lub bool do 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 ? 
} 

Jak widać Chcę zmienić (this.gsCheck2) checkState przez zmiana spowoduje (this.gsCheck1) checkState i kończy się na wartości całkowitej, która jest potrzebna.

Aktualizacja .... problem rozwiązany

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()); 
} 

Odpowiedz

12
  • Rozważmy CheckBox.Checked który jest własnością logiczną.
  • Użyj box.CheckState = (CheckState)ValueCheck;
  • Możesz również użyć ?: operator.

Aktualizacja według opinii:

Albo zadeklarować ValueCheck jako checkState:

CheckState ValueCheck; 
private void.... 

lub przekonwertować wartość int do wartości checkState:

this.gsCheck2.CheckState = (CheckState)ValueCheck; 

obsady z powrotem wartość CheckState do 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); 

Aktualizacja
FYI, zamiast pisać metodę ValueCheck, istnieje operator C# ?: operator wspomniałem powyżej, który można zrobić:

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

Jakie jest tłumaczenie:

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

nie mogę używać CheckBox.Checke –

+0

Dlaczego nie możesz, proszę wyjaśnić i spróbujemy poszukać lepszej opcji. – Shimmy

+0

Edytowałem moje pytanie, proszę spojrzeć. –

1

Wygląda na to, że ValueCheck powinien mieć wartość 1 lub 0 odpowiadającą odpowiednio true i false, w takim przypadku należy ould użyj:

this.gs_check2.Checked = ValueCheck == 1; 

EDIT: W oparciu o edycję wydaje co chcesz to:

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

jednak pamiętać, że może to być możliwe, że ValueCheck może zawierać nieprawidłową wartość dla CheckState wyliczenie .

+0

this.gs_check2.Checked = ValueCheck; nie działa –

+0

Powiedział: ==, nie =. – Shimmy

+0

ValueCheck ma już wartość dodatnią lub ujemną, więc dlaczego == 1; –

3

Czy naprawdę potrzebujesz CheckedState, który obejmuje również "częściowy" sprawdzony stan niektórych CheckBoxes może, lub po prostu szukasz sposobu, bez pisania grupy instrukcji IF, aby zastosować wartości do iz CheckBox? Jeśli tak, czy rozważałeś użycie ConvertTo?

obrócić 0 lub 1 na wartość logiczną, który może być przypisany do checkbox:

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

Albo wiarygodnie kolei sprawdzonej właściwość pole wyboru na 1 lub 0:

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

Można również spróbować

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

checkState enum ma następujące wartości:

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

Jeśli przechowujesz swoje wartości jako bit zerowy w swoim DB, odpowiada to boolowi? w języku C#.

Napisałem następujące statyczne metody pomocnicze do wygodnej konwersji między słowami bool? i 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; 
     } 
Powiązane problemy