我试过了:
if(PauseButton.Image != global::GripAIConsole.Icons.Resume)
{
PauseButton.Image = global::GripAIConsole.Icons.Resume;
ToolTipMainWin.SetToolTip(PauseButton, "Resume / Step <F4>");
}
它不起作用。我原本以为它是在内部比较指针,看它们是否指向同一个地方。
答案 0 :(得分:2)
您正在使用资源,因此如果您想确保引用正确,请使用静态方法Object.ReferenceEquals()
进行比较。正如ChrisF所说,你不应该用它来确定应用程序逻辑。使用简单的bool变量要好得多(而且性能更友好)。
答案 1 :(得分:2)
我将使用枚举来定义可能的状态:
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有关,而与逻辑无关。从形式上显示的东西推断出逻辑状态是很奇怪的。