有什么办法可以简化这个吗?
Is there any way I can simplify this?
我有两个标签(工资和工时)要相乘。当用户没有输入数字时,我希望出现一个错误框,但我只能弄清楚最简单的方法是制作两个 if 语句并以这种方式进行。任何帮助都会很棒。
private void btnCalc_Click(object sender, EventArgs e)
{
double hours = Double.Parse(tbxHours.Text);
double pay = Double.Parse(tbxPay.Text);
if (Double.TryParse(tbxPay.Text, out pay))
{
double result = hours * pay;
MessageBox.Show($" total amount is {result} ", "Click Event",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
else
{
MessageBox.Show($"You must enter a number", "Input Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
tbxPay.Clear();
}
if (Double.TryParse(tbxHours.Text, out hours))
{
double result = hours * pay;
}
else
{
MessageBox.Show($"You must enter a number", "Input Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
tbxHours.Clear();
}
}
每个控件只需要解析一次。以下是您可以对包含数字作为文本的多个控件重复使用的简化。
private void btnCalc_Click(object sender, EventArgs e)
{
if (TryParseFromTextBox(tbxHours, out double hours) &&
TryParseFromTextBox(tbxPay, out double pay))
{
double result = hours * pay;
MessageBox.Show($" total amount is {result} ", "Click Event",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
}
public bool TryParseFromTextBox(TextBox control, out double value)
{
if (!double.TryParse(control.Text, out value))
{
MessageBox.Show($"You must enter a number in {control.Name}", "Input Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
control.Clear();
return false;
}
return true;
}
需要考虑的一些额外事项。
- 你应该关注数字解析失败的控件吗?
- 如果这些文本框中没有有效数字,您的
btnCalc
是否应该可以点击?
我有两个标签(工资和工时)要相乘。当用户没有输入数字时,我希望出现一个错误框,但我只能弄清楚最简单的方法是制作两个 if 语句并以这种方式进行。任何帮助都会很棒。
private void btnCalc_Click(object sender, EventArgs e)
{
double hours = Double.Parse(tbxHours.Text);
double pay = Double.Parse(tbxPay.Text);
if (Double.TryParse(tbxPay.Text, out pay))
{
double result = hours * pay;
MessageBox.Show($" total amount is {result} ", "Click Event",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
else
{
MessageBox.Show($"You must enter a number", "Input Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
tbxPay.Clear();
}
if (Double.TryParse(tbxHours.Text, out hours))
{
double result = hours * pay;
}
else
{
MessageBox.Show($"You must enter a number", "Input Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
tbxHours.Clear();
}
}
每个控件只需要解析一次。以下是您可以对包含数字作为文本的多个控件重复使用的简化。
private void btnCalc_Click(object sender, EventArgs e)
{
if (TryParseFromTextBox(tbxHours, out double hours) &&
TryParseFromTextBox(tbxPay, out double pay))
{
double result = hours * pay;
MessageBox.Show($" total amount is {result} ", "Click Event",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}
}
public bool TryParseFromTextBox(TextBox control, out double value)
{
if (!double.TryParse(control.Text, out value))
{
MessageBox.Show($"You must enter a number in {control.Name}", "Input Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
control.Clear();
return false;
}
return true;
}
需要考虑的一些额外事项。
- 你应该关注数字解析失败的控件吗?
- 如果这些文本框中没有有效数字,您的
btnCalc
是否应该可以点击?