C# – TextBoxvalidation

我有一些代码可以检查并确保当用户在字段中输入时,必须输入1到10之间的整数。

虽然如果用户关注该字段,那么“坏”数据(例如“fdgfdg”)仍然留在该字段中。 因此,有些人可以certificate当焦点在场上丢失时,如果数据无效,则输入默认值,例如5

private void textBox4_TextChanged(object sender, EventArgs e) { try { int numberEntered = int.Parse(textBox4.Text); if (numberEntered  10) { MessageBox.Show("You must enter a number between 1 and 10"); } } catch (FormatException) { MessageBox.Show("You need to enter an integer"); } } 

你可以在这里使用几个事件, LeaveLostFocusValidating这里有关于MSDN上这些不同事件的更多讨论。

在某些情况下, LeaveLostFocus不会触发,因此在您的情况下最好使用的是Validating事件:

  textBox1.Validating += new CancelEventHandler(textBox1_Validating); void textBox1_Validating(object sender, CancelEventArgs e) { int numberEntered; if (int.TryParse(textBox1.Text, out numberEntered)) { if (numberEntered < 1 || numberEntered > 10) { MessageBox.Show("You have to enter a number between 1 and 10"); textBox1.Text = 5.ToString(); } } else { MessageBox.Show("You need to enter an integer"); textBox1.Text = 5.ToString(); } } 

看看这里 ,我会使用TryParse

如果您像在这里一样进行手动滚动validation,那么您需要做的就是在MessageBox.Show()之后设置默认值

在标准winforms中,我认为你没有任何框架支持validation,但你可以看看这个: http : //msdn.microsoft.com/en-us/library/ms951078.aspx的灵感,所以你不要分散整个应用程序的这个逻辑

使用文本框控件上的Leave事件来validation并设置默认值