Предотвращение многократного показа диалога - PullRequest
1 голос
/ 14 января 2011

У меня есть следующий фрагмент кода:

        else if (state.IsKeyDown(Keys.H))
        {
            Help help = new Help();
            help.ShowDialog();
        }

Почему-то, если я удерживаю клавишу H, диалоговое окно открывается несколько раз: alt text

Ответы [ 3 ]

4 голосов
/ 14 января 2011

Если вы используете XNA для ввода, сохраните предыдущий KeyState, а затем выполните проверку, чтобы узнать, выпущен ли предыдущий KeyState и нажата ли текущая KeyState.

Эта ссылка поможет вам правильно решить проблему.

2 голосов
/ 14 января 2011

Создайте диалог справки как член вашего класса.Инициализируйте его один раз и измените код для этого:

    else if (state.IsKeyDown(Keys.H))
    {
        if (!help.Visible)
             help.ShowDialog();
    }
0 голосов
/ 14 января 2011

Возможно, вы используете событие KeyPress и можете использовать событие KeyUp (или KeyDown ).

Еще один обходной путь - использование одноэлементного шаблона в всплывающем окне справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...