KeyDownイベントを使用してTextBoxで特定の文字のみを受け入れるようにします。私はすでに1文字、一重引用符を除いて、それを動作させました。書かれるキャラクタを得るために、私は(char)e.KeyValue
を使用します。これは引用符を除くすべての文字に対して機能します(Ûを付ける)。私はただe.KeyCode
を使用することができますが、値はKeys.Oem4
であり、AFAIKはシステムによって異なる可能性があります。KeyDownイベントで一重引用符キーを検出する
一重引用符キーを一貫して検出する方法はありますか?
は、コードスニペット:私のために
char c = (char)e.KeyValue;
char[] moves = { 'r', 'u', ..., '\'' };
if (!(moves.Contains(c) || e.KeyCode == Keys.Back || e.KeyCode == Keys.Space))
{
e.SuppressKeyPress = true;
}
'KeyPress'イベント(と思う[WM_CHARである](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646276(V = VS.85).aspxの))は 'KeyPressEventArgs'を使用します。これはあなたが探しているものである' KeyChar'プロパティを持っています。そのイベントが必要なことをするなら、それを使うことができます。 –
@EdPlunkettが言ったこと。 'KeyDown'と' KeyEventArgs'は、実際の文字ではなく、仮想キーコードだけを与えます(値が一致するので、キャストの動作はちょうど偶然です)。単一引用符を生成するキーの仮想キーコードは、レイアウトによって異なります。問題は 'KeyCode'ではありません。 'KeyValue'も普遍的ではありません。 –
@EdPlunkettそれはそうしますが、私はキープレスを抑制する必要があります。これは 'KeyDown'イベントでのみ可能です。 – Pipe