У меня есть следующий фрагмент кода:
else if (state.IsKeyDown(Keys.H)) { Help help = new Help(); help.ShowDialog(); }
Почему-то, если я удерживаю клавишу H, диалоговое окно открывается несколько раз:
Если вы используете XNA для ввода, сохраните предыдущий KeyState, а затем выполните проверку, чтобы узнать, выпущен ли предыдущий KeyState и нажата ли текущая KeyState.
XNA
KeyState
Эта ссылка поможет вам правильно решить проблему.
Создайте диалог справки как член вашего класса.Инициализируйте его один раз и измените код для этого:
else if (state.IsKeyDown(Keys.H)) { if (!help.Visible) help.ShowDialog(); }
Возможно, вы используете событие KeyPress и можете использовать событие KeyUp (или KeyDown ).
Еще один обходной путь - использование одноэлементного шаблона в всплывающем окне справки.