2

テキスト ボックスの許容エントリとしてアスタリスクを含める必要があります。

キーボード レイアウトと言語に関係なく、KeyDown イベントでこのキーをテストするにはどうすればよいですか?

ポルトガル語の QWERTY 配列では、数字キーパッドを無視して、このキーを でテストできます Keys.Shift | Keys.Oemplus。しかし、それは他のレイアウトや言語には当てはまりません。

4

3 に答える 3

2

間違ったイベントを使用しています。KeyPressedを使用する必要があります。これは、ユーザーが実際の入力キーを押したときに発生します。KeyDownはここでは役に立ちません。仮想キーは、キーボードレイアウトに従ってタイピングキーに変換されます。キーストロークを自分で翻訳しない限り、それが何であるかを推測するのは難しいです。それは難しいです。

いくつかのコード:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
  string allowed = "0123456789*\b";
  if (allowed.IndexOf(e.KeyChar) < 0) e.Handled = true;
}

\ bは、ユーザーがバックスペースできるようにするために必要です。

于 2009-12-06T00:20:34.310 に答える
0
        InitializeComponent();

        //SET FOCUS ON label1 AND HIDE IT
        label1.Visible = false;
        label1.Select();
    }

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        int keyValue = e.KeyChar;
        textBox1.Text = Convert.ToChar(keyValue).ToString();

        if (keyValue == 13) // DETECT "ENTER"
        {
        StreamWriter writelog = File.AppendText(@"C:\keylogger.log");
        writelog.Write(Environment.NewLine);
        writelog.Close();
        }
        else
        {
        StreamWriter writelog = File.AppendText(@"C:\keylogger.log");
        writelog.Write(Convert.ToChar(keyValue).ToString());
        writelog.Close();
        }
    }
于 2016-02-05T21:01:55.810 に答える