1

在 C# 中,如何在用户输入时捕获所有char输入到 atextbox中的内容?

因此,如果用户键入Hello World该函数,则该函数将捕获每个人char并对其进行处理。

我需要对所有输入的文本进行超级精确的控制。我将从textbox所有无效字符中删除,并允许用户堆叠某些字符,然后在使用其他字符时会触发函数。

例子:

用户将以下内容键入textbox

Blarg Blarg 600*50-90blarg

这就是我想要操作这个烂摊子的方式:

在读取每个 Char 时,所有字母字符都会从内存和文本框中丢弃,因此用户甚至看不到它们已输入。

所以第一部分甚至没有显示出来,然后当用户键入6时坚持到文本框,0然后0最终显示给用户的是600. 然后用户键入*,这会从屏幕上丢弃,但它会导致触发一个函数,该函数会在文本框中获取数字并等待下一个数字。

我可以处理大部分问题,但在 C# 中验证来自键盘的用户输入并不容易

所以问题是:我可以在每个字符上操作代码,因为它们来自键的右侧吗?

4

2 回答 2

4

很简单,您可以像这样使用 KeyPress 事件:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    char c = e.KeyChar;
    // your code here
}

然后,您可以像这样解析 char 信息:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    char c = e.KeyChar;

    if (c >= 48 && c <= 57)
    {
        // numeric value
        // do something
    }
    else if (c == 42)
    {
        // multiply (*)
        // do something
    }
    else if (c == 47)
    {
        // divide (/)
        // do something
    }
    else if (c == 13)
    {
        // enter key
        // do something
    }
    else
    {
        // discard
        e.Handled = true;
    }
}
于 2013-04-07T16:07:42.117 回答
1

如果您只使用您的文本框只允许特定字符作为输入,您可以尝试使用MaskedTextBox.

于 2013-04-07T16:13:30.173 回答