您可以使用NO CODING做到這一點。
對於布爾值:1)在窗體上創建一個複選框。 2)雙擊複選框。完成。
VS創建,鏈接和導航你編輯一個新的功能,每當複選框發生變化時被調用,用戶是否點擊了控件或程序代碼實際上改變了的值。爲其分配相同的值不起作用。 (測試)
...
// Demonstrate behavior:
checkBox1.Checked = false; // does not trigger checkBox1_CheckedChanged (the first time) because the form defaulted it to false)
checkBox1.Checked = false; // does not trigger checkBox1_CheckedChanged
checkBox1.Checked = true; // triggers checkBox1_CheckedChanged
checkBox1.Checked = true; // does not trigger checkBox1_CheckedChanged
checkBox1.Checked = false; // triggers checkBox1_CheckedChanged
checkBox1.Checked = false; // does not trigger checkBox1_CheckedChanged
...
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
// Modal pop-up to display checkBox1.Checked (it converts to "False" or "True"):
MessageBox.Show(new Form() {TopMost=true,TopLevel=true}, "Checked =" + checkBox1.Checked, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
缺點:不是最好的設計模式。你現在在你的表格上有一個虛假的領域(除非你想在那裏)。你可以禁用它來防止用戶切換它,它仍然會工作。 (測試)你可以使它看不見,但它仍然是「在那裏」。要從表單中取出,您必須替換您借用的GUI代碼。
恐怖:checkBox1.Checked被checkBox1_CheckedChanged之前更新或屬性的值被調用,但形式上的複選框不會更新後,直到 checkBox1_CheckedChanged回報。即使你撥打this.Update()
。 (已測試)(在VS2010上針對.NET 3.0進行測試。)
如果您可以將字符串轉換爲字符串屬性,則可以使用其setter來觸發任何其他想要發生的事情。 – TaW