在没有字符的情况下尝试正则表达式时,我的winforms EnterValue仍然在if语句之后被触发,如何在触发后阻止它进一步运行?
private void EnterValue_Click(object sender, EventArgs e)
{
if (textBox1.Text != string.Empty && !Regex.IsMatch(textBox1.Text, @"^[0-9]+$"))
{
MessageBox.Show("Please only enter numbers");
textBox1.Clear();
}
//convert input to double
listDouble.Add(Convert.ToDouble(textBox1.Text)); // this line still throws exception
textBox1.Clear();
//clear existing items
listBox1.Items.Clear();
// clear any existing list items
for (int i = 0; i < listDouble.Count; i++)
{
listBox1.Items.Add(listDouble[i]);
}
//for each value added, add this to our list
}
答案 0 :(得分:3)
从方法返回:
if (textBox1.Text != string.Empty && !Regex.IsMatch(textBox1.Text, @"^[0-9]+$"))
{
MessageBox.Show("Please only enter numbers");
textBox1.Clear();
return; // nothing after this will execute
}
仅当if
谓词为true时才会执行此操作,并且只要return;
语句被命中,该方法就会立即返回,而不会运行任何其他代码。
答案 1 :(得分:1)
第一个选项是使用return
:
if (textBox1.Text != string.Empty && !Regex.IsMatch(textBox1.Text, @"^[0-9]+$"))
{
MessageBox.Show("Please only enter numbers");
textBox1.Clear();
return; // exit method
}
第二个选项是使用else
:
if (textBox1.Text != string.Empty && !Regex.IsMatch(textBox1.Text, @"^[0-9]+$"))
{
MessageBox.Show("Please only enter numbers");
textBox1.Clear();
}
else
{
// your statements
}
答案 2 :(得分:1)
使用Decimal.TryParse
。检查条件后使用return
退出当前方法:
return
语句终止它出现的方法的执行,并将控制权返回给调用方法。
Decimal dec;
if (!Decimal.TryParse(textBox1.Text, out dec))
{
MessageBox.Show("Please only enter numbers");
textBox1.Clear();
return;
}