6

私は Windows フォームを持っています。ユーザーEnterがフォーカスを次のコントロールに設定するときに必要です。これを達成する方法(キープレスイベントを使用せずに)

4

3 に答える 3

6

フォームの KeyPreview をキャッチできます。コンストラクターで KeyPreview を true に設定すると、これを使用できます。

protected override bool ProcessKeyPreview(ref Message m)
{
    if (m.Msg == 0x0100 && (int)m.WParam == 13)
    {
        this.ProcessTabKey(true);
    }
    return base.ProcessKeyPreview(ref m);
}
于 2013-01-16T04:35:26.820 に答える
1

ProcessCmdKey を使用して、keyData にEnterキーが含まれているかどうかを確認し、SelectNextControlメソッドを使用してフォーカスを設定できます。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData.HasFlag(Keys.Enter)) 
    {
        SelectNextControl(ActiveControl,true,true,true,true);
        return true; //Stops the beeping
    }

    return base.ProcessCmdKey(ref msg, keyData);
}
于 2013-01-16T04:46:13.213 に答える
0

キープレスイベントを使用したくない場合は、オーバーライドする必要がありますProcessCmdKey

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Return)
    {
        MessageBox.Show("You pressed the Enter key");
    }
    return base.ProcessCmdKey(ref msg, keyData);
}
于 2013-01-16T04:38:32.437 に答える