我有一些代码可以检查并确保当用户在字段中输入时,必须输入1到10之间的整数。
虽然如果用户关注该字段,但“坏”数据(例如“fdgfdg”)仍留在字段中。因此,有些人可以证明当焦点在场上丢失时,如果数据无效,则输入默认值,例如5
private void textBox4_TextChanged(object sender, EventArgs e)
{
try
{
int numberEntered = int.Parse(textBox4.Text);
if (numberEntered < 1 || numberEntered > 10)
{
MessageBox.Show("You must enter a number between 1 and 10");
}
}
catch (FormatException)
{
MessageBox.Show("You need to enter an integer");
}
}
答案 0 :(得分:15)
您可以在此处使用多个事件,Leave
,LostFocus
和Validating
在MSDN here上有更多关于这些不同事件的讨论。
在某些情况下,Leave
和LostFocus
不会触发,因此在您的情况下最好使用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();
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您像在这里一样进行手动滚动验证,那么您需要做的就是在MessageBox.Show()之后设置默认值
在标准winforms中我不认为你有任何框架支持验证,但你可以看一下:http://msdn.microsoft.com/en-us/library/ms951078.aspx获取灵感,这样你就不会在整个应用程序中分散这个逻辑
答案 3 :(得分:0)
使用文本框控件上的Leave事件验证并设置默认值