这让我感到非常紧张。我有一个简单的CheckBox,当选中它时,按下按钮时会假设做一些额外的工作。如果CheckBox没有被选中,它不会做额外的工作。简单,你会想。C#复选框选中值不正确
private void previewButton_Click(object sender, EventArgs e)
{
MessageBox.Show(mfsCheckbox.CheckState.ToString());
if (mfsCheckbox.CheckState == CheckState.Checked)
{
//never gets here
//do extra stuff
}
if (mfsCheckbox.Checked)
{
//never gets here
//do extra stuff
}
}
private void mfsCheckbox_CheckedChanged(object sender, EventArgs e)
{
MessageBox.Show(mfsCheckbox.CheckState.ToString());
if (mfsCheckbox.Checked)
{
mfsCheckbox.Checked = true;
mfsCheckbox.CheckState = CheckState.Checked;
}
}
当运行这段代码中,选中该复选框,并按照CheckChanged事件代码,它说:“经过”。为了更好的衡量,我甚至在CheckChanged事件中设置了这两个状态,以确保它们被正确设置。然后,我直接点击预览按钮后,它刚刚告诉我CheckBox是“选中”,它说“未选中”,并不会运行我的if语句...
基本上,它从Checked到Unchecked,即使当我可以直观地看到它仍然被检查,并且在我通过编程确保它的状态应该被“检查”之后。
感谢您的任何帮助。
更新:初始代理被另一个模块通过STRAY代码调用。我会承担责任,在夜间服务器构建生活作为惩罚责任。投票结束,因为这对任何人都没有价值。
如果我没有错误复选框的值尚未在事件处理程序中设置。这可能是问题吗? –
物业ThreeState的价值是多少? – Steve
ThreeState在声明事件处理程序MessageBox中的“已检查”后为假。 – CODe