• ベストアンサー

C#で、Shift+Ctrl+Cを認識できない

Windows10 VS2010 C# keydownイベントで、ctrl + Shift + C を取ろうとすると e.Shift、e.Controlがtrue、e.KeyCodeがKeys.ShiftKeyになってしまい ”C”を 判別できなかった。なにか認識できる方法ありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • iijijii
  • ベストアンサー率55% (576/1038)
回答No.3

>なぜかCTRL+SHIFT+Cだけがダメなんです。 まさかとは思いますが、キーボード自体がその組み合わせに対応してない可能性があります。 ↓のサイトで確認してみて下さい。 http://nas6.net/keyboard.htm また左右逆のShiftとCtrlなら使えるかも確認して見て下さい。 もしキーボードのせいならキーボードの設計ミスですね。

k-03matsuura
質問者

補足

他のPCで確認しても同じ現象でした。 右側のCTRL、SHIFT使ってみましたがやはりだめでした。 サイトで確認したところ、なぜか正常に認識できました。 さっぱりわかりません。

その他の回答 (2)

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.2

試してみたところ、 Cを先に押して、ShiftとControlを後から押すとこうなり、 ---- True,True,ShiftKey ShiftKey, Shift, Control ---- ShiftやControlを先に押して、Cを後から押すとこうなりました。 ---- True,True,C C, Shift, Control ---- 押す順で違うのかも知れないですね。

k-03matsuura
質問者

補足

なぜかCTRL+SHIFT+Cだけがダメなんです。 もう1日くらい待って解決しないようなら、仕方がないので仕様変えてもらいます。

  • iijijii
  • ベストアンサー率55% (576/1038)
回答No.1

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 も新しい方が断然と使いやすくなってます。

k-03matsuura
質問者

補足

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は認識できません。

関連するQ&A

専門家に質問してみよう