Как конвертировать int или bool в checkState

мне нужно преобразовать int и или bool в 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 ?
}

Как вы можете видеть я хочу, чтобы изменить (это.gsCheck2) CheckState путем изменения (это.gsCheck1) CheckState и в конечном итоге с целочисленным значением, которое необходимо.

обновление.... проблема решена

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

6 ответов


  • считают CheckBox.Checked который является логическим свойством.
  • использовать box.CheckState = (CheckState)ValueCheck;
  • вы также можете использовать ?: оператор.

обновление в соответствии с комментариями:

либо объявите ValueCheck как CheckState:

CheckState ValueCheck;
private void....

или преобразовать значение int в значение CheckState:

this.gsCheck2.CheckState = (CheckState)ValueCheck;

приведение значения CheckState к 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);

обновление
FYI, вместо написания метода ValueCheck существует оператор C#?: оператор я уже упоминал выше, что вы можете сделать:

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

что является переводом:

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

вам действительно нужно CheckedState, который также охватывает "частичное" проверенное состояние, которое могут иметь некоторые флажки, или вы просто ищете способ без написания кучки операторов IF для применения значений К и из флажков? Если да, рассматривали ли вы возможность использования ConvertTo?

включить 0 или 1 в логическое значение, которое может быть назначено флажок:

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

или надежно превратить свойство Checked флажка в 1 или 0:

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

Я считаю Convert.ToBoolean(urObject); это то, что вы после.

if(Convert.ToBoolean(urObject)) {} 

/ / выше код в C# эквиваленты C / C++ код:

if(urObject) {} //Which will return false if urObject is null or 0 (for integer), else return true

информация об API:http://msdn.microsoft.com/en-us/library/system.convert.toboolean.aspx


вы также можете попробовать это

int ValueCheck=Convert.ToByte(chk.Checked)

появляется ValueCheck должно быть либо 1, либо 0, представляющее true и false соответственно, в этом случае вы должны использовать это:

this.gs_check2.Checked = ValueCheck == 1;

EDIT: на основе вашего редактирования кажется, что вы хотите, это:

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

однако обратите внимание, что возможно, что ValueCheck может содержать недопустимое значение для CheckState перечисление.


перечисление CheckState имеет следующие значения:

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

Если вы храните свои значения как бит nullable в своей БД, это соответствует bool? в C#.

Я написал следующие статические вспомогательные методы для преобразования между типа bool? и 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;
        }