double x;
double y;
string strx = TextBoxX.Text;
string stry = TextBoxY.Text;
if (!double.tryParse(strx, out double a))
{MessageBox.Show("Incorrect input");}
else if (!double.tryParse(stry, out double b))
{MessageBox.Show("Incorrect input");}
x = a;
y = b; <---
问题是x和x接收a的值,但是y对b不能做到相同。 我了解它是因为它在'else'内并且可能不会执行,但是如果我删除else,那么如果两个文本框都为空或不是数字,我将得到两个错误弹出窗口...
有任何解决问题的帮助吗?
答案 0 :(得分:2)
if (!double.TryParse(strx, out double a) || !double.TryParse(stry, out double b))
{
MessageBox.Show("Incorrect input");
return;
}
答案 1 :(得分:2)
您应该质疑如何设置逻辑。
现在,如果一个或两个文本框都不正确,则用户会看到模棱两可的“错误输入”。我会感到沮丧。哪里输入不正确?是第一个文本框吗?第二?都是吗?
当您开发更好的UI时,答案将是验证每个文本框,并让每个错误的框变颜色或提供有关表单本身的其他反馈。否则,想象一下当您向用户展示具有20个不同字段的表单时,逻辑将变得多么丑陋。
但是,如果您只打算使用两个字段,并且想要有一些逻辑,请尝试这样的操作(请注意,在这样做时,我也摆脱了else
,所以b将始终被设置):
double x;
double y;
string strx = TextBoxX.Text;
string stry = TextBoxY.Text;
List<string>() invalids = new List<string>();
if (!double.tryParse(strx, out double a))
{invalids.Add("boxX");}
if (!double.tryParse(stry, out double b))
{invalids.Add("boxY")}
if invalids.Length != 0
{MessageBox.Show("Incorrect inputs in " + String.Join(", ", invalids.ToArray());}
x = a;
y = b;
用户会喜欢一个框,该框告诉他们所有错误,而不是多个弹出框,或者每次必须单击确定以查看还有更多错误。