如何在 C# 中的文本框 textChanged 事件中查找特定数量的数字?

How to look for a specific amount of digits within texbox textChanged event in C#?

在我的 Windows 表单应用程序中,我想实现一个功能,用户必须填写产品的序列号,当与数据库中的任何产品匹配时,该产品必须出现在一个网格。我想使用文本框 textChanged 事件来做到这一点。

我很困惑,我必须阻止在文本框值与数据库中的任何值匹配之前触发 textChanged 事件。有什么方法可以让文本框在 运行 用于在网格中显示产品的剩余代码之前期望特定数量的文本或数字(我的序列号将固定长度 - 如 10001、10002、10003)?

您可以使用 TextBoxTextLength 属性 来获取文本的长度。例如:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (textBox1.TextLength < 5)
        return;

    //Send query to database
}

注意: 正如 Jimi 在评论中也提到的那样,最好将 MaxLength 设置为 TextBox 以防止输入更多文本。

考虑使用 [MaskedTextBox][1]。 MaskedTextBox 与标准 TextBox 类似,只是您定义输入文本的格式。这可以是任何东西,字母、数字、破折号等。

在您的情况下,您只接受五位数的输入。

使用 windows 表单设计器添加 MaskedTextBox,或自己添加:

this.maskedTextBox1 = new System.Windows.Forms.MaskedTextBox();
this.maskedTextBox1.Location = ...
this.maskedTextBox1.Size = ...
// etc. Advise: let forms designer do this

// accept only input of five digits:
this.Mask = "00000";

操作员会看到所请求输入的长度指示。操作员不可能键入非数字。当输入所有五个数字时发生事件,但也在键入 (TextChanged) 时发生,因此如果需要,您可以实现自动完成。如果操作员按下了一个无效键,您甚至可以收到通知,这样您就可以将错误告知操作员