2016-08-19 3 views
-3

Я хочу, чтобы переменная увеличивалась при нажатии пробела. Это то, что я пробовал до сих пор, и он, похоже, не работает. Нет сообщения об ошибке, поэтому я не знаю, что не так.Не получить ввод пробела

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 
    int Coins = 0; 
    int ButtonKeyNumber = (int)Key.Space; 

    private void textBlockCoins_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
    { 
     if (e.KeyValue == ButtonKeyNumber) 
     { 
      Coins = Coins + 1; 
      textBlockCoins.Text = "You Have " + Coins + "Coins"; 
     } 
    } 
} 

Когда я запускаю код, текстовое поле просто говорит «У вас есть 0 монет». Переменная ButtonKeyNumber существует, потому что я хочу иметь возможность легко изменять, какой ключ нужно будет нажимать.

+0

Зачем вам переменную вообще? Сравните непосредственно с 'Key.Space', а затем используйте отладчик, чтобы выяснить, какой ключ вы используете в' e.KeyValue'. –

+0

Действительно ли вызван ваш callback-вызов KeyDown? Убедитесь, что правильный элемент управления имеет фокус (сначала нажмите на textBlockCoins), чтобы получить событие KeyDown. Поместите точку останова на 'if' и посмотрите, каково значение e.KeyValue на самом деле! – khargoosh

+0

сделал 'textBlockCoins_KeyDown' триггер? –

ответ

0

Возможно, вы используете неправильный класс Keys. Используйте класс System.Windows.Forms.Keys, это тип, который предоставляется KeyEventArgs.KeyCode. Вместо этого попробуйте что-то подобное.

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 
    int Coins = 0; 
    Keys CoinKey = System.Windows.Forms.Keys.Space; 

    private void textBlockCoins_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
    { 
     if (e.KeyCode == CoinKey) 
     { 
      Coins = Coins + 1; 
      textBlockCoins.Text = "You Have " + Coins + "Coins"; 
     } 
    } 
} 

Вы все еще должны убедиться, что правый элемент управления имеет фокус при нажатии клавиши пробела.

0

Набор KeyPreview истина на вашей форме, и вы будете ловить их: MSDN

Original

Смежные вопросы