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

时间:2013-04-07 16:04:13

标签: c# winforms keyboard

在C#中,如何在用户输入的情况下捕获输入char的所有textbox

因此,如果用户输入Hello World,该功能会捕获每个人char并对其进行处理。

我需要对所有文本进行超级精确控制。我将从textbox中删除所有无效字符,并允许用户在使用时将某些字符和其他字符叠加在一起职能之火。

示例:

用户在textbox

中输入以下内容

Blarg Blarg 600*50-90blarg

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

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

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

我可以处理大部分内容,但在C#

中验证来自键盘的用户输入并不容易

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

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:1)

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