0

英字とアンダースコアを処理したい。SHIFT も押されている場合、どの文字が入力されているかを知るにはどうすればよいですか。現在、シフトされた文字は ELSE 句によって処理されます。

private void txtSearch_KeyUp(object sender, KeyEventArgs e)
{
    if (((int)e.KeyData >= 65 && (int)e.KeyData <= 122) ||
             (e.KeyData.ToString() == "_"))
    {
        System.Diagnostics.Debug.WriteLine(e.KeyData);
        //char thisChar = char excluding SHIFT, Control
        System.Diagnostics.Debug.WriteLine("Process " + thisChar);
    }
    else
    {
        System.Diagnostics.Debug.WriteLine("Throw away a " + e.KeyData);
    }
}
4

2 に答える 2

0
if (e.Shift && (((int)e.KeyData >= 65 && (int)e.KeyData <= 122) || (e.KeyData.ToString() == "_")))
{
    //Code here
}
于 2012-08-21T03:51:09.633 に答える
0

こんばんは

私は少し異なるアプローチを取りました:

    private void txtSearch_KeyUp(object Sender, KeyEventArgs E)
    {
        int iKeyData = (int)(E.KeyData);

        if (((E.KeyData.HasFlag(Keys.OemMinus) == true) && (E.Shift == true)) || ((iKeyData >= 65) && (iKeyData <= 122)))
        {
            System.Diagnostics.Debug.WriteLine(E.KeyData);
        }
        else
        {
            System.Diagnostics.Debug.WriteLine("Throw away a " + E.KeyData);
        }
    }

ただし、これがさまざまなキーボード レイアウトでどのように機能するかはわかりません。それも調べたいと思うかもしれません。

乾杯!

于 2012-08-21T05:41:13.590 に答える