這讓我感到非常緊張。我有一個簡單的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