1

ユーザーがF2を押すたびにイベントを切り替えるにはどうすればよいですか?

if(/*is pressed F2*/){
    this.Close(); 
}

前もって感謝します!

4

4 に答える 4

1

簡単な方法は、MessageFilter

を実装するクラスを作成するIMessageFilter

public class YourFilter : IMessageFilter
{
    public event EventHandler F2Pressed = delegate { };

    private const Int32 WM_KEYDOWN = 0x0100;

    public bool PreFilterMessage(ref Message m)
    {
        if (m.Msg != WM_KEYDOWN)
            return false;

        if ((Keys)m.WParam==Keys.F2)
            F2Pressed(this, new EventArgs());

        return false;
    }
}

を使用して登録します

var filter = new YourFilter();
Application.AddMessageFilter(filter);
filter.F2Pressed += YourEventHandlerHere;
于 2012-09-11T10:03:13.613 に答える
1

まず、次のようなキーダウンイベントを作成します。

    private void form1_KeyDown(object sender, KeyEventArgs e)
    {
        if ( e.KeyCode == Keys.F2 ) 
            this.Close();
    }

そして、form1のコントロールのキーを押したときにキーを取得するために: form1のイベントKeyPreviewでform1をtrueに変更しますpage_load

    private void form1_Load(object sender, EventArgs e)
    {
        this.KeyPreview = true;
    }
于 2012-09-11T10:11:24.763 に答える
0

私はこれを行う最も簡単な方法を見つけました:

private void preferences_KeyDown( object sender, KeyEventArgs e ) {
    if (e.KeyCode == Keys.F2) {
        this.Close();
    }
}
于 2012-09-11T10:15:04.180 に答える
0

現在、これはフォームとその中の他の要素の両方に焦点を当てて機能しています(今、私に同意する場合は、回答としてマークしてください):

public partial class preferences : Form {
    public preferences() {
        InitializeComponent();
        this.KeyPreview = true;
    }
    private void preferences_KeyDown( object sender, KeyEventArgs e ) {
        if (e.KeyCode == Keys.F2) {
            this.Close();
        }
    }
}
于 2012-09-11T10:26:15.480 に答える