2016-08-19 5 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"; 
     } 
    } 
} 

코드를 실행하면 텍스트 상자에 "You Have 0 Coins"이라고 표시됩니다. 어떤 키를 누를 필요가 있는지 쉽게 변경할 수 있기를 원하기 때문에 ButtonKeyNumber 변수가 있습니다.

+0

왜 당신이 모든 변수를 필요합니까? 'Key.Space'와 직접 비교 한 다음, 디버거를 사용하여'e.KeyValue'에 어떤 키가 있는지 알아보십시오. –

+0

KeyDown 이벤트 콜백이 실제로 호출되고 있습니까? KeyDown 이벤트를 수신하려면 올바른 컨트롤에 포커스가 있는지 확인하십시오 (먼저 textBlockCoins를 클릭하십시오). '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

설정 양식에 true로 KeyPreview 당신은 그들을 잡을 것 : MSDN

Original

관련 문제