2016-03-04 63 views
0

我有一个文本框tb_weight这是一个计算的输入和我做了一个消息框代码,将弹出如果按计算按钮时,文本框为空:停止代码,如果文本框为空

if (string.IsNullOrEmpty(this.tb_weight.Text)) 
{ 
    MessageBox.Show("Textbox is empty"); 
} 

我有一个单选按钮对应的数字将与文本框中写入的值相乘。下面是其中一个按钮的代码:

if (rb_wcf1.IsChecked == true) 
{     
    int a = Int32.Parse(tb_weight.Text); 
    b = (a * 1.03)/1000; 
    lbl_wll.Content = Math.Round(b, 2); 
} 

所以,如果没有选择任何一个单选按钮,并且在文本框中没有文字,我的消息框弹出。如果我将文本框留空并检查单选按钮rb_wcf1并按下计算按钮,程序将在关闭消息框后失败。我对编程非常陌生,我不确定如何更好地设计这些代码。如果文本框为空并且单选按钮已被选中,我不希望单选按钮中的代码启动。任何人都可以请给我一些提示或指导?

+0

如果所有的代码都在计算按钮点击事件中 - 那么在显示消息框之后再返回。如果代码在单独的事件中 - 只需检查上面做的空字符串。 – PaulF

回答

1

你已经有一个条件,检查文本框为空:

if (string.IsNullOrEmpty(this.tb_weight.Text)) 

只需使用:

if (!string.IsNullOrEmpty(this.tb_weight.Text)) 
{ 
    if (rb_wcf1.IsChecked == true) 
    { 
     // perform your calculations 
    } 
} 

或反转的条件,退出方法作为一种护卫条款:

if (!string.IsNullOrEmpty(this.tb_weight.Text)) 
{ 
    // show message 
    return; 
} 

if (rb_wcf1.IsChecked == true) 
{ 
    // perform your calculations 
} 
// etc. 

有许多不同的方式来组织你的逻辑,以及什么是最好的个人偏好以及您的代码目前的结构(我们无法从这些代码片段中看到)的组合。但总体而言,您要做的只是检查文本框是否为空,您已经做了。


旁注:Int32.Parse()可以抛出一个异常,如果输入不能被解析到一个整数。你可能会改为试试这个:如果

int a; 
if (!Int32.TryParse(tb_weight.Text, out a)) 
{ 
    // show an error 
    return; 
} 
// continue with your logic 

这样的输入不能解析为一个整数,一个友好的错误消息将显示,而不是例外。

+0

感谢您的帮助,这对我们帮助很大! –

0

您可以在if声明检查多个资源,但 确保你否定IsNullOrEmpty方法

if (rb_wcf1.IsChecked == true && !string.IsNullOrEmpty(this.tb_weight.Text)) 
    {     
     int a = Int32.Parse(tb_weight.Text); 
     b = (a * 1.03)/1000; 
     lbl_wll.Content = Math.Round(b, 2); 
    } 

您可以使用IsNullOrWhitespace为好,它也过滤掉串,只有空格,如:“”不是空的,它有空格

+1

是的,这也适用!谢谢,我的大脑今天不能正常工作! –

+0

我也在想这个,但是我强烈怀疑单选按钮的if条件是if/else if条件的一大部分。所以我不想一遍又一遍地重复相同的空/空检查。 – David

+1

如果它适合你,请考虑接受答案。在这种情况下@maarten会得到一些点。 – Mand

相关问题