0

だから私はフォームを作成しています。左右のキーは、フォームにあるnumericUpDownボックスにのみ対応する必要があります。だから私が書いたコードは次のとおりです。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
         if (keyData == Keys.Right)
        {

            numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value + 1);
        }
         if (keyData == Keys.Left)
        {
            try
            {
                numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value - 1);
            }
            catch { }
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

ただし、それが現在選択されているビューである場合、フォーム上の異なるオブジェクト間を移動するというデフォルトのアクションを引き続き実行しているようです。デフォルトのアクションを停止するにはどうすればよいですか?

4

4 に答える 4

2

デフォルトのアクションを実行したくない場合は、true を返す必要があります。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
     if (keyData == Keys.Right)
    {

        numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value + 1);
        return true;
    }
     if (keyData == Keys.Left)
    {
        try
        {
            numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value - 1);
            return true;
        }
        catch { }
    }
}
于 2013-08-21T20:17:48.663 に答える
1

おそらく、キー ストローク メッセージを処理したことを示すために true を返して、他のコントロールがそれを取得しないようにする必要があります。

于 2013-08-21T20:17:16.267 に答える
0
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
     if (keyData == Keys.Right){
        numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value + 1);
        return true;
     }
     else if (keyData == Keys.Left){
        try {
            numericUpDown1.Value = Convert.ToDecimal(numericUpDown1.Value - 1);              
        }
        catch { }
        return true;
    }        
    return base.ProcessCmdKey(ref msg, keyData);
}

注:実行したコードを投稿していないように見えますか? あなたの実際のコードを投稿することを強くお勧めしreturnます。また、コードには、return base.ProcessCmdKey(ref msg, keyData);他のキーを処理するために必要な がありません。

于 2013-08-21T20:16:19.757 に答える
0

イベントハンドラを追加して、これを行うことができます:

private void keypressed(Object o, KeyPressEventArgs e)
{
    if (e.KeyCode == Keys.Right || e.KeyCode == Keys.Left)
    {

        e.Handled = true; //this line will do the trick
        //add the rest of your code here. 

    }
}
于 2013-08-21T20:18:27.763 に答える