2017-12-21 33 views
0

私は現在、自分の仕事でC#を学んでいる途中です。私はいくつかのスタータープロジェクトを試していて、電卓を作ることにしました。私は単純な電卓のすべての機能を持っていますしかし、私はキーパッドイベントやkeydownイベントで動作するように数字キーを取得することはできません、私は誰かが私の詳細を手伝ってくれるのだろうか、私は電卓のcorrspondingsものにすべての数字キーをsettしたい、ここでは、私はkeypressイベントのために試したコードですし、私もnumpadロックオンとオフでこれを試してみました。Windows Form Calculator - 入力用ナンパードキット

private void n1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar = '1') 
     { 
      e.Handled = true; 
      n1.PerformClick(); 

     } 

    } 

だけで簡単に編集、私は、MSDNの例に従うことを試み、以下の

ます。private void n1_KeyDown(オブジェクト送信者、KeyEventArgs e)の {

 if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9) 
     { 
      if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9) 
      { 
       nonNumberEntered = true; 
      } 
     } 

そして、まだありません成功が含まれています

+3

ドキュメントを読んでいない場合は、F9キーを使用して、コードの 'if'行にブレークポイントを設定してください。次に、数字パッドの数字キーを押してみて、そのときに 'e.KeyChar'が何であるかを調べるためにウォッチウィンドウを使います。 'e'の他のプロパティも見てみることができます。 –

+0

[Calculator keypress]の重複している可能性があります(https://stackoverflow.com/questions/1031080/calculator-keypress) – ger

+0

NumLockをオンにして&1キーを押すと、KeyPressイベントがe .KeyCharは '1'に等しい。 – PaulF

答えて

1

参照のためMSDN Key Enumページを参照してください。

Keys.NumPad0はキーパッドにあり、Keys.D0は数字キーです。あなたはこのようなことをしたいと思っています。

if (e.KeyCode == Keys.NumPad0 || e.KeyCode == Keys.D0) 

また、演算子をマッピングすることもできます。あなたの追加のためのKeys.Add

0

等価演算子が何であるべきかを調べます。

if (e.KeyChar == '1') 

(あなたは....私を信頼し、その特定の穴に落下する最後の人ではありません)

+1

これは問題ではないと思います。コードは「暗黙的にcharをboolに変換できません」というコードをコンパイルしません。C#では誤って使用する可能性があります代入がブール値の場合、または暗黙の変換がある場合は、ブール式の代わりに代入演算子を使用します。 – PaulF

0

代わりに割り当てるの比較を使用してみてください。

+0

上記の私のコメントを参照してください - コードはその割り当てでコンパイルされません。 – PaulF

関連する問題