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

使用 KeyPress 事件

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        int keyValue = e.KeyChar;
        textBox1.Text = Convert.ToChar(keyValue).ToString();
    }
于 2016-02-05T20:22:50.690 回答
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 回答