如何在 C# 中的文本框 textChanged 事件中查找特定数量的数字?
How to look for a specific amount of digits within texbox textChanged event in C#?
在我的 Windows 表单应用程序中,我想实现一个功能,用户必须填写产品的序列号,当与数据库中的任何产品匹配时,该产品必须出现在一个网格。我想使用文本框 textChanged 事件来做到这一点。
我很困惑,我必须阻止在文本框值与数据库中的任何值匹配之前触发 textChanged 事件。有什么方法可以让文本框在 运行 用于在网格中显示产品的剩余代码之前期望特定数量的文本或数字(我的序列号将固定长度 - 如 10001、10002、10003)?
您可以使用 TextBox
的 TextLength
属性 来获取文本的长度。例如:
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
) 时发生,因此如果需要,您可以实现自动完成。如果操作员按下了一个无效键,您甚至可以收到通知,这样您就可以将错误告知操作员
在我的 Windows 表单应用程序中,我想实现一个功能,用户必须填写产品的序列号,当与数据库中的任何产品匹配时,该产品必须出现在一个网格。我想使用文本框 textChanged 事件来做到这一点。
我很困惑,我必须阻止在文本框值与数据库中的任何值匹配之前触发 textChanged 事件。有什么方法可以让文本框在 运行 用于在网格中显示产品的剩余代码之前期望特定数量的文本或数字(我的序列号将固定长度 - 如 10001、10002、10003)?
您可以使用 TextBox
的 TextLength
属性 来获取文本的长度。例如:
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
) 时发生,因此如果需要,您可以实现自动完成。如果操作员按下了一个无效键,您甚至可以收到通知,这样您就可以将错误告知操作员