2012-08-06 93 views
0

嘗試根據程序中布爾值的狀態變灰某些按鈕/文本字段。布爾值會跟蹤子系統的連接是否仍然運行。初始化爲false直到它連接,然後看門狗從那裏更新它。基於布爾值更新GUI

這可能會通過執行程序多次發生,因此我想製作一些監視器,只監視布爾狀態並根據需要更新GUI /按鈕屬性。

我最初的想法是爲此創建某種事件處理程序,但在我的搜索中,我在C#中找到了一些名爲「屬性」的東西,這可能會使這更容易。不幸的是,我無法找到關於這種技術的大量信息(最初的線索在這裏:How to trigger event when a variable's value is changed?

所以我來找你們,希望你們能夠給我一個最好的方法去做這個。

感謝,

編輯::不知道它的問題,但布爾被聲明爲一個外部。這可能會讓事情變得更容易,正如我在很多情況下注意到的,當在類之間進行通信時使用觀察者模式,這在這個問題中不是問題。

+0

當狀態發生變化時,子系統不僅可以調用某個事件嗎?據推測,該子系統將運行自己的線程,你將不得不BeginInvoke()信號到GUI。 – 2012-08-06 21:19:21

回答

1

C#屬性只是提供獲取/設置對象中變量的專用語法。由於它們只是專門的方法,你可以真正添加任何你想要的功能。從你所描述的內容來看,我可能會推薦使用一個監聽器......動作監聽器使用一種叫做「觀察者」的模式,它恰好適合你在這種情況下要做的事情。你可以谷歌「觀察者模式」,你會得到更多關於如何使用它的信息,並創建你自己的變體,你可能會也可能不會決定做:)

祝你好運!

+0

這看起來像我正在嘗試做的事,我會讀一下,看看會發生什麼。謝謝你的提示!在接受答案之前,我將等待其他人是否有其他建議。 – fooOnYou 2012-08-06 20:48:57

+0

今天早上得到了這個工作,謝謝! – fooOnYou 2012-08-07 17:48:56

0

讓我給你舉一個簡單的例子:

button1.IsEnabled = false; 

要禁用按鈕,或者你只需​​要做一個文本字段。

+0

我意識到這一部分,但我不想將該代碼內聯在我更改變量狀態的位置,而且我甚至希望在變量更改狀態時不必調用函數。我更願意設置某種類型的系統來監視變量的狀態,並將GUI更新爲可用。預先做好了更多的工作,但是長期來看,它的擴展性和效率都很高。 – fooOnYou 2012-08-06 20:48:08