C# 当用户键入时,如何将所有键入的字符捕获到文本框中?

C# 当用户键入时,如何将所有键入的字符捕获到文本框中?,c#,winforms,keyboard,C#,Winforms,Keyboard,在C语言中,当用户输入时,如何捕获输入到文本框中的所有字符 因此,如果用户键入helloworld,函数将捕获每个单独的字符并对其进行处理 我需要超级精确的控制所有文本,因为它来了。我将从文本框中删除所有无效字符,并允许用户堆叠某些字符,然后在使用其他字符时触发一系列函数 例如: 用户在文本框中键入以下内容 布拉格布拉格600*50-90布拉格 这就是我想处理这一混乱局面的方式: 读取每个字符时,所有字母字符都会从内存和文本框中丢弃,因此用户甚至看不到输入的字符 所以第一部分甚至没有显示,然后当

在C语言中,当用户输入时,如何捕获输入到文本框中的所有字符

因此,如果用户键入helloworld,函数将捕获每个单独的字符并对其进行处理

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

例如:

用户在文本框中键入以下内容

布拉格布拉格600*50-90布拉格

这就是我想处理这一混乱局面的方式:

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

所以第一部分甚至没有显示,然后当用户键入6并粘贴到文本框,然后是0,然后是0,最终显示给用户的是600。然后用户键入*并从屏幕中丢弃,但它会导致启动一个函数,该函数获取文本框中的数字并等待下一个数字

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


所以问题是:我可以在每个字符位于按键右侧时对其进行代码操作吗?

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

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

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;
    }
}

如果您只使用文本框只允许使用particluar字符作为输入,您可以尝试使用。

如果您只使用文本框只允许使用particluar字符作为输入,您可以尝试使用。

或者,您可以使用TextChanged,但这不会给您按下的字符。干杯,如何停止将键入的字符加载到文本框?我真的很想控制加载到文本框中的内容。请查看我的编辑,这是一种方法。通过将KeyPressEventArgs.Handled设置为true,您可以告诉控件您已经处理了keypress,并且它不需要执行任何其他操作,因此它不会插入该键。您可能会发现enter键会发出令人讨厌的噪音,如果您愿意,请查看本文。水果应该是一个真正的单词:或者,您可以使用TextChanged,但这不会给您提供已按下的字符。干杯,Adam,我如何停止将已键入的字符加载到文本框中?我真的很想控制加载到文本框中的内容。请查看我的编辑,这是一种方法。通过将KeyPressEventArgs.Handled设置为true,您可以告诉控件您已经处理了keypress,并且它不需要执行任何其他操作,因此它不会插入该键。您可能会发现enter键会发出令人讨厌的噪音,如果您愿意,请查看本文。水果应该是一个真正的单词: