10

私はC#のWindowsパネルコントロールでキープレスイベントを取得したいのですが、私にとってはどんな体の助けでもあります...

4

4 に答える 4

13

Panel.KeyPressイベントを処理する必要があります。

public void MyKeyPressEventHandler(Object sender, KeyPressEventArgs e)
{
    ... do something when key is pressed.
}

...

(MyPanel as Control).KeyPress += new KeyPressEventHandler(MyKeyPressEventHandler);
于 2010-01-25T12:25:27.207 に答える
9

問題は、最初にメイン フォームが KeyPress を取得し、すぐにこのメッセージをアクティブなコントロールに送信することです。それがこのキーの押下を処理しない場合、親コントロールなどにバブルアップされます。

このチェーンをインターセプトするには、Form.KeyPreviewtotrueにハンドラーを追加する必要がありますForm.KeyPress。これで、押されたキーをフォーム内で処理できるようになりました。

于 2010-01-25T12:51:23.560 に答える
3

「Panel」オブジェクトは「KeyPress」イベントを正しく受け取ることができません。

オーバーロードを作成しましたPanel

public class PersoPanel : Panel

オーバーライドされたメソッドを使用しましたProcessCmdKey

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

押されたキーをインターセプトするには:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    MessageBox.Show("You press " + keyData.ToString());

    // dO operations here...

    return base.ProcessCmdKey(ref msg, keyData);
}
于 2010-03-16T10:00:55.650 に答える
1

パネル + キープレス - C# ディスカッション ボード - CodeProject

http://www.codeproject.com/Messages/704386/Panel-plus-Keypress.aspx

于 2010-12-10T08:24:58.217 に答える