我将定义可能的状态与一个枚举:
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