0

カスタムCheckedListBoxを作成し、OnKeyUp、OnKeyPress、OnKeyDown、OnPreviewKeyDownメソッドをオーバーライドしようとしましたが、達成したいことを達成できませんでした。

基本的に、現在行われていることは、CheckedListBoxにフォーカスがあるときにユーザーがキーを押すと、選択されたアイテムが変更されることです。たとえば、ユーザーが上または下のキーを押すと、CheckedListBoxの次/前の項目が選択されます。ユーザーが「A」を押すと、文字「A」で始まる最初の項目が選択されます。

CheckedListBoxが、キーの押下に完全に応答しないように動作するようにしたい(ただし、マウスのクリックには応答する)。

誰かがこれを達成する方法を教えてもらえますか?

4

2 に答える 2

2

CheckedListBoxから継承し、そのProcessCmdKey()メソッドをオーバーライドしてtrueを返すことで、これを実現できると思います。すべてのコマンドを無視する必要があります。

私はそれを解決策で試してみて、報告します:)

アップデート:

できます。私が使用したコード:

using System.Windows.Forms;

public class CheckedListBoxIgnoreKeyboard : CheckedListBox
{
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        return true;
    }
}

コントロールをツールボックスに表示するには、再構築が必要です。

于 2012-11-14T18:36:58.373 に答える
0

これでKeyDownイベントを使用しようとしましたか?

  e.SuppressKeyPress = true;

どうやら、私の側で働く

于 2012-11-14T18:48:13.297 に答える