我需要将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.gsCheck1)CheckState来更改(this.gsCheck2)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());
}
答案 0 :(得分:12)
CheckBox.Checked
这是布尔属性。box.CheckState = (CheckState)ValueCheck;
?:
operator。根据评论更新:
将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);
<强>更新强>
仅供参考,而不是编写ValueCheck方法,我上面提到了一个C#操作符?:
operator,您可以这样做:
int result = box.CheckState == CheckState.Checked ? 1 : 0;
以下是翻译:
int result;
if (box.CheckState == CheckState.Checked)
result = 1;
else
result = 0;
答案 1 :(得分:3)
你真的需要CheckedState,它也涵盖了一些CheckBoxes可以拥有的'部分'检查状态,或者你只是在寻找一种方法而不需要编写一堆IF语句来向CheckBoxes应用值和从CheckBoxes应用值?如果是这样,您是否考虑过使用ConvertTo?
将0或1转换为可分配给CheckBox的布尔值:
CheckBox1.Checked = Convert.ToBoolean(0); // False - Not checked.
CheckBox1.Checked = Convert.ToBoolean(1); // True - checked.
或者将Checkbox的Checked属性可靠地转换为1或0:
int result = Convert.ToInt32(CheckBox1.Checked);
答案 2 :(得分:2)
我相信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
答案 3 :(得分:2)
你也可以尝试这个
int ValueCheck=Convert.ToByte(chk.Checked)
答案 4 :(得分:1)
看来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
枚举的无效值。
答案 5 :(得分:0)
CheckState枚举具有以下值:
CheckState.Unchecked = 0,
CheckState.Checked = 1,
CheckState.Indeterminite = 2
如果在数据库中将值存储为可空位,这对应于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;
}