aContextMenuStrip
を開いたときに、ユーザーが選択可能な文字の最初の文字を入力すると、それをクリックしたかのようになります。それを傍受して、彼がクリックしたキャラクターを取得したいと思います。
次のコードはそれを行いますが、可能な文字をハードコーディングします。キーストロークによる自動選択を無効にする(マウスクリックのみを残す)か、文字をインターセプトする方法のいずれかによって、これを行う一般的な方法が必要です。
次の簡略化されたコードは、winformText
を文字で入力し、ContextMenuStrip
「A」という1つのオプションがあることを前提としています。
public Form1()
{
InitializeComponent();
contextMenuStrip1.KeyDown += contextMenuStrip1_KeyDown;
}
private void button1_Click(object sender, EventArgs e)
{
contextMenuStrip1.Show();
}
void contextMenuStrip1_KeyDown(object sender, KeyEventArgs e)
{
e.SuppressKeyPress = true;
if (e.KeyCode == Keys.A)
{
if (e.Shift) Text = "A";
else Text = "a";
}
}
イベントが発生しないため、イベントの使用KeyPress
とチェックe.KeyChar
は機能しません。(代わりに「A」クリックイベントが発生します。)
次のいずれかを使用します:、、、e.KeyCode
またはe.KeyData
キーとしてe.KeyValue
を受け入れるため、(さらにハードコーディングしないと)機能しません。Shift