7

デバイスアプリを設計しています。コンパクト フレームワーク 2.0

ユーザーに F1 を押して次の画面に移動してもらいたいのですが、うまくいきません。

解決策が見つからないようです。

出来ますか?

これは私が通常Keypressを使用する方法です:

これは機能します:

        if (e.KeyChar == (char)Keys.M)
        {
            MessageBox.Show("M pressed");
            e.Handled = true;
        }

これは機能しません:

        if (e.KeyChar == (char)Keys.F1)
        {
            MessageBox.Show("F1 pressed");
            e.Handled = true;
        }
4

4 に答える 4

7

これを参照

ProcessCmdKeyフォーム クラスのメソッドをオーバーライドし、keyData == Keys.F1F1 が押されているかどうかを確認するために使用できます。上記のリンクには、次のような例があります。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.F1)
    {
        MessageBox.Show("You pressed the F1 key");
        return true;    // indicate that you handled this keystroke
    }

    // Call the base class
    return base.ProcessCmdKey(ref msg, keyData)
}
于 2013-07-30T13:25:27.100 に答える
6

これを試して

private void Form1_Load(object sender, EventArgs e)
{
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(Form1_KeyDown);
}

void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode.ToString() == "F1")
    {
        MessageBox.Show("F1 pressed");
    }
}
于 2013-07-30T13:22:35.247 に答える
2

一部のキー (f1、f2、矢印キー、タブなど) は、キーコードを使用する必要があるため、keychar で「キャプチャ」できません。

if (e.KeyCode == Keys.F1)
{
  // do stuff
}

keychar プロパティ - http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.keychar.aspx

于 2013-07-30T13:36:28.993 に答える
0

KeyDownの代わりに使用KeyPress:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyData == Keys.F1)
    {
        // your code here
    }
}

KeyPreviewにも設定true

于 2013-07-30T13:22:54.153 に答える