スポンサーサイト

--/--/--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C# WPFのキーイベント処理(IME対応)

2013/10/15

C# WPFのキーイベント処理

キー入力処理を行う際のコードって


public void KeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Z)
{
// 処理
}
}


こんな感じですよね。


でもこれだと不十分で、
IMEが「かな」入力だったりした際にZキーを押しても反応しません。

デバッグで見るとe.Keyには「ImeProcessed」が入ってます。
変わりにe.ImeProcessedKeyに「Z」が入ってます。

逆にIMEが非有効の場合にはe.ImeProcessedKeyは「None」が入ってます。

ここら辺を使って処理できそうです。


Key inputKey;
if (e.ImeProcessedKey != Key.None)
{
inputKey = e.ImeProcessedKey;
}
else
{
inputKey = e.Key;
}

if (inputKey == Key.Z)
{
// 処理
}


こうしておけば対応できます。

WinFormにはe.KeyCodeって便利そうなプロパティが用意されてるのでこれを使えば簡単にできそうです(未確認)。


まぁ、仕様の問題でもありまして、
「半角のみ対応」って一言書けば終わりな気もしますし、世のゲームは半角のみが多いですよね。

結構慣れてるユーザは無意識に半角入力にしたりしますし、私もこのタイプのユーザです。

コメントの投稿

非公開コメント

advertisement


プロフィール

とりにく

Author:とりにく
ゲーム好きなプログラマーやってます。

使用可能言語:C,C++,C#,WPF,JavaScript,Cuda
使用可能開発環境:VisualStudio2005-2013,Unity,CodeWarrior

リンクフリーです
相互リンクなどはこちら↓までかコメント欄にでもよろしくです。
skymail_tt@yahoo.co.jp

検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。