-1

だから私はc#プロジェクト(winforms)で働いているので、プロジェクトにたくさんのテキストボックスがあり、 key を押すupと、特定のテキストボックスがtextbox1彼の値をインクリメントすると言いたいのですが、すでにイベントを使用していますOnKeyUpが、問題がありますテキストボックスがたくさんあるので、これをクリックしTextBox1て操作を開始する必要があります。

これは私のコードです:

//Action speed up
private void TxBoxKeyUp_KeyUp(object sender, KeyEventArgs e)
{
    TxBoxKeyUp.Text = (speed+=5).ToString();
    LbSpeed.Text = TxBoxKeyUp.Text;
}
4

2 に答える 2

1

フォーム上のすべてのコントロールの KeyUp イベントを処理する場合は、Form.KeyPreviewプロパティを True に設定できます。次に、フォームの KeyUp イベント ハンドラーを追加し、このイベントでテキスト ボックスの内容を更新します。

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
    TxBoxKeyUp.Text = (speed+=5).ToString();
    LbSpeed.Text = TxBoxKeyUp.Text;
}

これは、イベントの発生時にフォーカスされたコントロールが何であれ、すべての KeyUp をキャッチすることが意図されている場合にうまく機能します。フォーカスされたコントロールが TextBox の場合にのみキーアップを取得する必要がある場合、ソリューションはより複雑になります。現在フォーカスされているコントロールを取得し、それがテキストボックスかどうかを確認するには、この質問で説明されているようなメソッドが必要です。

于 2013-03-31T21:42:13.907 に答える
0

テキストボックスを配列として定義してから、デリゲートを使用できます。

単一のキーアップ イベントTxBoxKeyUp_KeyUpとテキスト ボックスの配列txtarrがあると仮定します。

foreach (TextBox txt in txtarr)
    txt.KeyUp += new KeyEventHandler(TxBoxKeyUp_KeyUp);

したがって、単一の関数ですべてのテキストボックスのキーアップ イベントを処理できます。

于 2013-03-31T21:58:00.847 に答える