我將定義可能的狀態與一個枚舉:
public enum State {
Stopped,
Pausing,
Running
}
,然後定義一個狀態屬性或變量:
State _state;
然後更改狀態如下:
void ChangeState(State newState)
{
_state = newState;
switch (newState) {
case State.Stopped:
PauseButton.Image = global::GripAIConsole.Icons.Pause;
ToolTipMainWin.SetToolTip(PauseButton, "Start game <F5>");
break;
case State.Pausing:
PauseButton.Image = global::GripAIConsole.Icons.Resume;
ToolTipMainWin.SetToolTip(PauseButton, "Resume/Step <F4>");
break;
case State.Running:
PauseButton.Image = global::GripAIConsole.Icons.Pause;
ToolTipMainWin.SetToolTip(PauseButton, "Pause <F4>/Stop game <F6>");
break;
}
}
...或任何您的邏輯要求。
這是更清潔和可以理解的。一張圖片與GUI有關,而不是與邏輯有關。從形式上顯示的東西推斷邏輯的狀態是很奇怪的。
你確定這兩個'PauseButton.Image'和'全球:: GripAIConsole.Icons.Resume'指向同一個參考?你怎麼知道的? – Oded 2011-12-20 23:11:04
你爲什麼使用圖像來確定程序的狀態? – ChrisF 2011-12-20 23:12:22
我使用的圖像狀態,因爲如果它的工作,這將是最容易做的事情。如果我做PauseButton.Image =全球:: GripAIConsole.Icons.Resume,我期望這是相同的全球:: GripAIConsole.Icons.Resume。 – Almo 2011-12-20 23:14:38