-3

C#でタイピングチューターの単純なプロジェクトに取り組んでいます

ここに画像の説明を入力

誰か助けてください.1つの問題があります..私はボタンの後ろにコードを書いています

private void btnq_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyValue == 81)
        {
            i = Convert.ToInt16(rtb1.Text.IndexOf('q'));

            if (i == 0)
            {

                rtb1.Text = rtb1.Text.Remove(0, 1);
            }

        }
    }

プロジェクトをデバッグしてキーボードから Q キーを押しても何も起こらない..しかし、クリックマウスで Q ボタンをクリックすると((マウスクリックイベントのコードも書いていますが、動作しています)) Q ボタンを押すと動作し、今すぐクリックした後キーボードからは機能します..キーボードから初めてキーを押したときに機能しないのはなぜですか..

どこが間違っていますか?助けてください..私は待っています..

4

3 に答える 3

1

イベント ハンドラーがQボタンにアタッチされているようです。つまり、そのボタンがフォーカスされているときにキーを押したときにのみ呼び出されるということです。

代わりにすべきことは、イベント ハンドラーをキーボード グループボックスに追加することなどです。

于 2013-01-17T15:34:39.877 に答える
0

私はこれを追加します私の問題は解決しましたが、まだ1つの問題に直面しています。入力を開始すると、時計の時刻がキーで開始および停止しSpaceます。入力中に問題が発生します。

     private void Form1_KeyPress(object sender, KeyPressEventArgs e)

    {  
       if (btnclock.Text == "Start")
            e.Handled = false ;
         else
        {
         i = Convert.ToInt16(rtb1.Text.IndexOf(e.KeyChar));

            if (i == 0)
            {

                rtb1.Text = rtb1.Text.Remove(0, 1);
            }
            else
                j++;
            textBox1.Text = Convert.ToString((j));
        }
    }
于 2013-01-19T05:16:58.007 に答える
0

入力しているコンポーネントには、アプリケーションの起動時にフォーカスがありません。

できることは、コンストラクターにフォーカスを設定することです。

MyControl.Focus();
于 2013-01-17T15:36:01.197 に答える