问题描述
当我运行程序时,我故意将其中一个变量留空,这样我就可以得到 MessageBox.Show();
,表明您不能忘记任何变量,否则程序将不会计算最终输出的结果。>
但是当我点击确定时,应用程序仍然计算结果(这是错误的,因为缺少一个变量)。
我使用 TBPRECIO.Focus();
返回丢失的变量,但没有它它仍然完成。
private void ENTradAS()
{
try
{
PRECIO = Convert.Todouble(TBPRECIO.Text);
CANTIDAD = Convert.Todouble(TBCANTIDAD.Text);
CATEGORIA = Convert.Todouble(TBCATEGORIA.Text);
}
catch
{
MessageBox.Show("there cannot be any empty variable");
TBPRECIO.Focus();
}
}
解决方法
您是否尝试过使用 if-else 语句?
if(TBPRECIO.Text==""||TBCANTIDAD.Text==""||TBCATEGORIA.Text){
MessageBox.Show("there cannot be any empty variable");
TBPRECIO.Focus();
}
else{
//Your Condition
}
,
System.Convert.ToDouble 如果值为 null 会成功,但如果它是空字符串则会失败。具有 Text 属性的表单控件(无论是 winform 还是 webform)从不返回 null。
如果您的对象不是控件,您可能会得到一个空值而不是空字符串。无论如何,您的错误信息过于笼统,实际上具有误导性。
const msgSuffix = “ cannot be empty and must be a number”
double pr =0,cd=0,ca=0;
if ((!double.TryParse(TBPRECIO.Text,out pr)) || string.IsNullOrEmpty(TBPRECIO.Text)) {
MessageBox.Show($"TBPRECIO{msgSuffix}");
TBPRECIO.Focus();
}
else if ((!double.TryParse(TBCANTIDAD.Text,out cd)) || string.IsNullOrEmpty(TBCANTIDAD.Text))
{
MessageBox.Show($"TBCANTIDAD{msgSuffix}");
TBCANTIDAD.Focus();
}
else if((!double.TryParse(TBCATEGORIA.Text,out ca)) || string.IsNullOrEmpty(TBCATEGORIA.Text))){
MessageBox.Show($"TBCATEGORIA{msgSuffix}");
TBCATEGORIA.Focus();
}
else {
PRECIO = pr;
CANTIDAD = cd;
CATEGORIA = ca;
}
现在,您会收到一条错误消息,其中提到了正确的字段并准确描述了情况,从而使其更加有效。
,"Focus()
" 不会妨碍其他代码的执行。它只是将键盘焦点放在 TBPRECIO TextBox 控件上。
如果您希望某些计算代码不执行,则必须在计算代码的开头放置一个前提条件检查“are-all-valuese-entered-and-valid”。
如何开始/触发计算?