仅允许TextBox中的整数

我在检查文本框时遇到问题,并确保其中只有整数。

到目前为止,我能够确认文本框中有文本,但检查它们是否为整数是不起作用的。 这是迄今为止我的代码。

if (textBox1.Text.Length == 0) { errorProvider1.SetError(textBox1, "need Cost of Disks"); return; } if (textBox2.Text.Length == 0) { errorProvider2.SetError(textBox2, "need Total disks in package"); return; } if (textBox3.Text.Length == 0) { errorProvider3.SetError(textBox3, "need the Gigabyte per disk"); return; } try { Double[] myValues = new Double[3]; myValues[0] = Double.Parse(textBox1.Text); myValues[1] = Double.Parse(textBox2.Text); myValues[2] = Double.Parse(textBox3.Text); Double ppd = myValues[0] / myValues[1] / myValues[2]; ppd = Math.Round(ppd, 3, MidpointRounding.AwayFromZero); label4.Text = ppd.ToString(); } catch (FormatException) { //errorProvider1.SetError(label4, "testing1"); //errorProvider2.SetError(label4, "testing2"); //errorProvider3.SetError(label4, "testing3"); return; } 

使用您当前的模式,如下所示:

 int tester; if (!Int32.TryParse(textBox1.Text, out tester)) { errorProvider1.SetError(textBox1, "must be integer"); return; } 

你为什么不使用MaskedTextBox ?

覆盖表单文本框中的Validating事件,然后您可以对内容执行TryParse

 public void textBox1_Validating(...) { // TryParse } 

您可以使用int.TryParse方法检查字符串是否为整数:

 int n = 0; bool isNumber = int.TryParse(textBox1.Text, out n); if (!isNumber) return; 

如果您不想在编辑框中允许除数字之外的任何内容,请挂钩键盘事件,检查不是数字的字符并取消它们。

当您在一个文本框中理清需要哪些事件时,只需在其他文本框上重复使用相同的事件,因为您不必复制事件。

 private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e) { // Filter out non-digit text input foreach (char c in e.Text) if (!Char.IsDigit(c)) { e.Handled = true; break; } } 

现在这很好用!

如果您开始使用ajax工具包,请保留此记录