Как конвертировать int или bool в checkState - PullRequest
9 голосов
/ 11 июля 2010

Мне нужно конвертировать 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 ?
}

Как видите, я хочу изменить (this.gsCheck2) CheckState, изменив (this.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 ]

12 голосов
/ 11 июля 2010
  • Рассмотрим 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;
3 голосов
/ 05 апреля 2011

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

Чтобы превратить 0 или 1 в логическое значение, которое можно назначить для CheckBox:

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

Или для надежного преобразования свойства Checked флажка в 1 или 0:

int result = Convert.ToInt32(CheckBox1.Checked);
2 голосов
/ 20 ноября 2012

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

int ValueCheck=Convert.ToByte(chk.Checked)
2 голосов
/ 19 октября 2012

Я верю 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

1 голос
/ 11 июля 2010

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

this.gs_check2.Checked = ValueCheck == 1;

РЕДАКТИРОВАТЬ: На основании вашего редактирования кажется, чтовы хотите вот что:

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

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

0 голосов
/ 07 февраля 2018

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

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

Если вы храните свои значения в виде битов со значением NULL в вашей БД, это соответствует 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;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...