1

フォームにタブコントロールがあり、キーアップイベントを使用して何かを管理する必要があります。

左または右のボタンを押すとタブページが変わり、タブコントロールのキーボードナビゲーションを無効にしたい。

これを行うことは可能ですか?

4

3 に答える 3

6

TabControl を拡張する必要はありません。その KeyDown イベントをサブスクライブして処理するだけです。

tabControl1.KeyDown+=new KeyEventHandler(tabControl1_KeyDown);

private void tabControl1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
            {
                e.Handled = true;
            }
        }

tabControl1 はページを変更しません。フォームの KeyUp と tabControl1 は正常に起動します。

于 2013-03-14T13:05:06.990 に答える
1

あなたはこれを探していると思います。

if (e.KeyCode == Keys.Tab) 
{
    //your logic
    e.SuppressKeyPress();
}

これは私がそれを手に入れたところです

于 2013-03-14T13:22:25.203 に答える
1

コントロールがキーを押さないように、Formレベルでこれらのキーを取得し、Handledプロパティをtrue( を返すことによって) に設定することをお勧めします。true

このメソッドを に追加しますForm

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Left || keyData == Keys.Right)
    {
        // do what you need to do and the
        // return true will stop processing
        return true;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}
于 2013-03-14T13:05:36.803 に答える