Как конвертировать 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
появляется 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;
}