2010-07-10 10 views
8

I int und oder Bool konvertieren müssenWie int oder bool konvertieren check

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 ? 
} 

zu check Wie man sehen kann ich (this.gsCheck2) Checkstate von changeing (this.gsCheck1) Checkstate ändern möchten und am Ende mit einem ganzzahligen Wert, der benötigt wird.

aktualisieren .... Problem gelöst

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

Antwort

12
  • Betrachten CheckBox.Checked, die die Boolesche Eigenschaft ist.
  • Verwenden Sie box.CheckState = (CheckState)ValueCheck;
  • Sie können auch die ?: operator verwenden.

-Update nach Kommentare:

erklären Sie entweder die ValueCheck als Checkstate:

CheckState ValueCheck; 
private void.... 

Oder den int-Wert auf einen Checkstate Wert umwandeln:

this.gsCheck2.CheckState = (CheckState)ValueCheck; 

Die Besetzung zurück der CheckState-Wert zu int:

aktualisieren
FYI, anstatt die ValueCheck Methode des Schreibens gibt es eine C# Operator ?: operator ich oben erwähnt, die Sie tun können:

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

, die eine Übersetzung ist von:

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

Ich kann nicht verwenden CheckBox.Checke –

+0

Warum können Sie nicht, bitte erklären, und wir versuchen, für eine bessere Option zu suchen. – Shimmy

+0

Ich habe meine Frage bearbeitet, bitte werfen Sie einen Blick darauf. –

1

Es erscheint ValueCheck sollte entweder 1 oder 0 sein, die true bzw. false darstellen, in welchem ​​Fall Sie sh verwenden Ould dies:

this.gs_check2.Checked = ValueCheck == 1; 

EDIT: Basierend auf Ihren bearbeiten scheint es, was Sie wollen, ist dies:

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

weisen jedoch darauf hin, dass es möglich sein könnte, dass ValueCheck einen ungültigen Wert für die CheckState Aufzählung enthalten könnte .

+0

this.gs_check2.Checked = ValueCheck; funktioniert nicht –

+0

Er sagte ==, nicht =. – Shimmy

+0

ValueCheck hat bereits einen positiven oder negativen Wert, also warum == 1; –

3

Brauchen Sie wirklich CheckedState, das auch den "partiell" überprüften Zustand einiger CheckBoxen umfasst, oder suchen Sie einfach nach einem Weg, ohne eine Menge IF-Anweisungen zu schreiben, um Werte auf und von CheckBoxes anzuwenden? Wenn ja, haben Sie ConvertTo in Betracht gezogen?

Um eine 0 oder 1 in einen boolean zu drehen, die einem CheckBox zugeordnet werden können:

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

Oder zuverlässig die Eigenschaft Checked einer Checkbox in eine 1 oder 0 drehen:

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

Sie können auch versuchen, diese

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

Checkstate-Enumeration hat folgende Werte:

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

Wenn Sie Ihre Werte als Nullable Bit in Ihrer DB speichern, entspricht dies Bool? in C#.

Ich schrieb die folgenden statischen Helper-Methoden für handliche Konvertierungen zwischen bool? und 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; 
     }