MSDNのthis pageによれば、左コントロールのKey Value
は162です。このキーがコードで押されているかどうかはどのように判断できますか?現時点では、キー入力を処理しようとするたびに、汎用制御キーである値17
が得られます。 2つを区別する方法はありますか?私はProcessCmdKey
をオーバーライドして、テキストボックスのPreviewKeyDown
を処理しようとしましたが、両方とも162の代わりに17を返します。すべての修飾キーでこれを行う必要があります。最後に値をハードコードする前に、 ?特定の修飾キーを取得する
編集:コードが追加されました。明確にするために、私は162の数字を検索し、修飾子を区別する別の方法を見つけるだけではありません。
private void PortfolioNameTextBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
var val = e.KeyValue; //17 when control is pressed and not 162
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
//msg.Wparam = 17
return base.ProcessCmdKey(ref msg, keyData);
}
あなたがキー入力をキャプチャするために使用しているコードを提供することができます(私はあなたがそれをキャプチャすると仮定しますあなたのフォーム内からではなく世界中から) –
私はコードを追加しました。はい、フォームだけです。 – XSL
WinFormsでは、あなたは運がないと思います。アプリケーションに渡されるキーコードのみを扱うことができます。潜在的な回避策は、グローバルキーフックを設定し、現在のアプリケーションが自分のものであることを確認することです。 –