如何捕获用户键入文本框时输入的所有字符's ?

本文关键字:字符 输入 用户 何捕获 文本 | 更新日期: 2023-09-27 18:08:07

在c#中,我如何捕获所有输入到textboxchar作为用户键入?

因此,如果用户输入Hello World,该函数将捕获每个单独的char并处理它。

我需要超级精确的控制所有的文本,因为它进来。我将从textbox中删除所有无效字符,并允许用户将某些字符堆叠起来,然后当它们被使用时,其他一些字符将触发函数。

的例子:

用户在textbox

中输入以下内容

Blarg Blarg 600*50-90blarg

我想这样处理这堆乱七八糟的东西:

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

所以第一部分甚至没有显示,然后当用户输入6时,它粘在文本框上,然后是0,然后是0,所以最终显示给用户的是600。然后用户输入*,这将从屏幕上被丢弃,但它会触发一个函数,该函数接受文本框中的数字并等待下一个数字。

我可以处理这些,但是在c#中验证来自键盘的用户输入并不容易

那么问题来了:我能不能在键右边的每个字符上操作代码?

如何捕获用户键入文本框时输入的所有字符's ?

很简单,您可以这样使用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;
    }
}

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