- ベストアンサー
C#で、Shift+Ctrl+Cを認識できない
Windows10 VS2010 C# keydownイベントで、ctrl + Shift + C を取ろうとすると e.Shift、e.Controlがtrue、e.KeyCodeがKeys.ShiftKeyになってしまい ”C”を 判別できなかった。なにか認識できる方法ありませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>なぜかCTRL+SHIFT+Cだけがダメなんです。 まさかとは思いますが、キーボード自体がその組み合わせに対応してない可能性があります。 ↓のサイトで確認してみて下さい。 http://nas6.net/keyboard.htm また左右逆のShiftとCtrlなら使えるかも確認して見て下さい。 もしキーボードのせいならキーボードの設計ミスですね。
その他の回答 (2)
- dell_OK
- ベストアンサー率13% (766/5720)
試してみたところ、 Cを先に押して、ShiftとControlを後から押すとこうなり、 ---- True,True,ShiftKey ShiftKey, Shift, Control ---- ShiftやControlを先に押して、Cを後から押すとこうなりました。 ---- True,True,C C, Shift, Control ---- 押す順で違うのかも知れないですね。
補足
なぜかCTRL+SHIFT+Cだけがダメなんです。 もう1日くらい待って解決しないようなら、仕方がないので仕様変えてもらいます。
- iijijii
- ベストアンサー率55% (576/1038)
Visual Studio 2010 を使っていて 開発対象が書いてないなら Windowsフォーム(System.Windows.Forms) かな? [Ctrl]+[Shift]+[c]を同時に押したつもりでも正確に同時押しすることは不可能です。 [Ctrl]+[Shift]を押した時点で一度イベントが発生したのでしょう。 対策としては、 if (e.KeyData == (Keys.C | Keys.Shift | Keys.Control)) { ~処理~ } ※Keys.ShiftKeyのイベントは無視 で良いと思います。 後で[Ctrl]+[Shift]+[c]同時押しのイベントが発生すると思われます。 余談ですが、Windowsフォーム はこれから覚えても使い道があんまりないかもしれません。 Visual Studio も新しい方が断然と使いやすくなってます。
補足
System.Windows.Formsです。 System.Diagnostics.Debug.WriteLine("{0},{1},{2}", e.Shift, e.Control, e.KeyCode); System.Diagnostics.Debug.WriteLine("{0}", e.KeyData); を入れて確認すると True,True,ShiftKey ShiftKey, Shift, Control が連続で出力されます。やはりCは認識できません。
補足
他のPCで確認しても同じ現象でした。 右側のCTRL、SHIFT使ってみましたがやはりだめでした。 サイトで確認したところ、なぜか正常に認識できました。 さっぱりわかりません。