我想在特定變量的值更改時切換按鈕的可見性。有沒有辦法將某種委託附加到值更改時自動執行的變量?如何在C#中的變量值發生變化時執行代碼?
7
A
回答
18
不,你不能在C#中重載賦值操作符。您可以做的最好的方法是將變量更改爲屬性,然後調用方法或委託或在其setter中引發事件。
private string field;
public string Field {
get { return field; }
set {
if (field != value) {
field = value;
Notify();
}
}
}
這樣做是由很多框架(如WPF DependencyProperty
系統)來跟蹤屬性的更改。
1
沒有辦法做到這一點。變量基本上就是應用程序寫入內存的地方。
使用,而不是一個屬性:
string myVariable;
public string MyVariable
{
get
{
return myVariable;
}
set
{
myVariable = value;
MyVariableHasBeenChanged();
}
}
private void MyVariableHasBeenChanged()
{
}
+0
只是一個小小的觀察,在您更改之後最好打電話給「MyVariableHasBeenChanged」。這樣,你可以在方法中對它做些什麼,並且你可以處理在作業中拋出異常的情況。 – 2009-07-16 10:32:35
0
您無論是在你的模型具有對GUI的參考(其中變量)和直接執行的setter方法的GUI變化,或者你讓你的GUI觀察你的模型通過一個觀察者,並將觀察到的模型火災事件傳遞給設置者中的觀察者。前者將最終導致意大利麪條代碼,因爲您在模型和視圖之間添加了越來越多的直接鏈接,因此只能用於內部工具和簡單程序。
3
2
你也可以使用數據綁定:in WPF,在Windows Forms。這允許您根據對象的屬性更改GUI的狀態,反之亦然。
相關問題
- 1. 在C#中運行代碼行後,變量的值會發生變化嗎?
- 2. 變量變化時字典中的值發生變化
- 3. 如何在CSS屬性的變量發生變化時執行jquery
- 4. Android在變量變化上執行代碼
- 5. 如何在多關係發生變化時執行遷移?
- 6. 在Android中,如何在變量發生變化時採取行動?
- 7. 在C中,讀取字符和整數時變量值發生變化
- 8. WPF:在依賴項屬性發生變化時運行代碼
- 9. Javascript:如何檢測變量的引用何時發生變化
- 10. 如何在Android Studio中變量發生變化時進行設置?
- 11. 如何在變量數量發生變化時在循環中編寫公式?
- 12. 變量更新時變量參數發生變化的函數
- 13. 在代碼執行後記住變量
- 14. 改變局部變量的值執行原始全局變量的值變化
- 15. 錯誤代碼執行相關代碼的變量代表的變量代表
- 16. 如何使用變量的值在我的代碼中執行某些操作?
- 17. 如何在URL中使用變量執行Javascript代碼
- 18. screen.get_at():運行代碼時圖像顏色發生變化pygame
- 19. 當數值發生變化時,MySQL增加用戶變量
- 20. 如何使用變量點擊圖像時發生變化
- 21. 爲什麼我的源代碼在c中使用strcpy時發生了變化
- 22. 如果編輯中的下拉值發生變化,如何執行函數?
- 23. 任何變量發生變化時觸發一個事件
- 24. 當輸入變量0,1,2和3執行此代碼時會發生什麼?
- 25. 密碼發生變化時的iPhone FBConnect
- 26. 如何在數量發生變化時實時輸出?
- 27. 在C中使用遠指針時代碼大小發生變化
- 28. 如果settimeout之後的變量發生變化,但在真正運行之前會發生什麼變化
- 29. 停在變量發生變化的那一行
- 30. jQuery在元素類發生變化時執行函數
謝謝Mehrdad。 – Rohit 2009-07-16 10:39:22
一個很好的常用技術是INotifyPropertyChanged接口。 – 2009-07-16 11:32:59