C# C复选框的选中值不正确
这让我快发疯了。我有一个简单的复选框,当选中时,当按下一个按钮时,它会做一些额外的工作。如果未选中该复选框,则不会执行额外的工作。你会觉得很简单C# C复选框的选中值不正确,c#,winforms,visual-studio-2012,checkbox,C#,Winforms,Visual Studio 2012,Checkbox,这让我快发疯了。我有一个简单的复选框,当选中时,当按下一个按钮时,它会做一些额外的工作。如果未选中该复选框,则不会执行额外的工作。你会觉得很简单 private void previewButton_Click(object sender, EventArgs e) { MessageBox.Show(mfsCheckbox.CheckState.ToString()); if (mfsCheckbox.CheckState == CheckState.Checked)
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事件代码,它显示为Checked。为了更好地衡量,我甚至在CheckChanged事件中设置了这两种状态,以确保它们设置正确。然后,我直接点击预览按钮,它刚刚告诉我复选框已选中,它说未选中,不运行我的if语句
基本上,即使在我可以直观地看到它仍然处于选中状态,并且在我以编程方式确保它的状态应该被选中之后,它也会从选中变为未选中
谢谢你的帮助
更新:INITIALIZECOMPONENT在另一个模块中被杂散代码调用。我会把负责的实习生放在夜间服务器上建立终身责任作为惩罚。投票结束,因为这对其他任何人都没有价值。MSDN在
如果ThreeState属性设置为false,则CheckState属性
值只能设置为CheckState。在代码中不确定,而不是由
用户交互
如果只想在CheckState被选中时执行代码,那么似乎需要一种不同的方法
您可以添加另一个仅在选中第一个复选框时启用的复选框
private void mfsCheckbox_CheckedChanged(object sender, EventArgs e)
{
checkForExtraStuff.Enabled = mfsCheckbox.Checked;
}
private void previewButton_Click(object sender, EventArgs e)
{
if (mfsCheckbox.Checked)
{
//do basic stuff
if (checkForExtraStuff.Checked)
{
//do extra stuff
}
}
}
如果我没有弄错的话,复选框的值还没有在事件处理程序中设置。这可能是问题所在吗?属性ThreeState的值是多少?ThreeState在声明已在事件处理程序MessageBox中选中后为false。此问题似乎与主题无关,因为它是一个特定的问题,对将来看到此帖子的其他人来说永远不会有任何帮助。选中的属性值如何?不同的方法会是什么样子?我已经使用了复选框。在此之前选中了属性,现在才选中此ISSUE…只能为真/假,因此对于三州标志不可行。根据您的要求,可能最好添加另一个复选框,如果第一个复选框未选中,则该复选框保持禁用状态,并且在选中第一个复选框时变为启用状态。此时,用户还可以设置第二个复选框。在众多的配置表单中,我需要确定的是它是否被选中。我之所以求助于CheckState,只是因为Checked由于某种原因不起作用,这才是我真正想弄明白的。对于那些失败的投票者,我试图帮助他们,谢谢你为所有这些工作投了我的赞成票。