2015-10-16 66 views
0

當標籤上的文本發生更改時,如何使複選框自行取消選中?C#當標籤上的文字發生變化時取消選中文本框

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if(Price.Text == "?"){ checkBox1.Checked = false} 
    } 

我不知道我應該把什麼放在「?」

+2

您應該處理標籤的TextChanged事件。 –

回答

3

你應該處理TextChanged事件的標籤:

private void label1_TextChanged(object sender, EventArgs e) 
{ 
    //You can use any logic here, 
    //for example you can check if(label1.Text=="something") 

    this.checkBox1.Checked = false; 
} 
+0

「檢查」指派可能需要根據標籤文本的值進行驗證 - 編輯等待審覈。 –

+0

@RobertFoster謝謝你的評論和編輯,基於OP問題**我不知道我應該放在「?」**我不確定OP是否希望這樣,我會改進答案並添加一個在代碼中註釋:) –

+1

是的,我意識到我的編輯後也是如此 - 編輯更好:) –

0

創建一個公共布爾類型變量

public bool DirtyBool = false; 

不管你寫的代碼來改變標籤的價值,你可以做一個像這樣的bool類型的新變量。

DirtyBool = true; 

比你可以做這樣的

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    if(DirtyBool){ checkBox1.Checked = false; } 
} 

BTW CheckedChanged當複選框被選中或取消選中從而通過@Reza Aghaei提供的答案將是更適合於事件只被解僱你情況。

+0

雖然這是針對錯誤的事件 - 應該根據其他控件的事件設置目標複選框的「Checked」屬性。 –

0

您選中的Check將在您的CheckBox.CheckedChanged事件中觸發。您必須在Label的TextChanged事件中觸發它。 Reza的答案並不完整,因此您應該這樣做:

YourLabel.TextChanged += (s, e) => 
{ 
if(YourLabel.Text == "?") yourCheckBox.Checked = false; 
else yourCheckBox.Checked = true; 
}; 
相關問題