2014-10-17 58 views
0

我有一个单击事件处理程序,它必须检查两个文本框是否为空,如果两者都不是值赋给两个变量并传递给另一个方法。C#跳过如果不为空

一个变量是一个字符串,另一个是整数。如果字符串为空,但整数不是,它将正常工作(它不应该!)。但是,如果整数为空并且String不是,它会给我一个预期的错误,因为它不应该达到那个点。

下面的代码:

 private void btnInsert_Click(object sender, EventArgs e) 
    { 
     String ActorName; 
     int Position; 
     if ((txtPosition.Text != null)) 
     { 
      if ((txtActorName.Text != null)) 
      { 
       ActorName = txtActorName.Text; 
       Position = int.Parse(txtPosition.Text); 
       InsertIntoArrayList(ActorName, Position); 
       PopulateActors(); 
      } 
      else 
      { 
       MessageBox.Show("Please enter an Actor Name"); 
       return; 
      } 
     } 
     else 
     { 
      MessageBox.Show("Please enter a position"); 
      return; 
     } 
    } 

正如你可以看到,如果txtPosition不为空,它然后测试txtActorName。如果其中任何一个为空,则会抛出相关消息。假设两者都不为空,它将值赋给变量并将它们传递给InsertIntoArrayLIst方法,然后调用PopulateActors方法。

如果我输入演员姓名和职位,一切工作正常。只有当我不输入某个位置时,它才会错过Nothings进入的位置,然后滑到Position = int.Parse(txtPosition.Text);行,因为txtPosition为空。

任何帮助将不胜感激!

+3

not empty =/= not null – Raptor 2014-10-17 03:31:50

回答

5

尝试使用例如!string.IsNullOrEmpty(txtPosition.Text)而不是txtPosition.Text != null。可以使用txtPosition.Text != ""。毕竟,Text属性应该永远不会为null。

当然,您应该对值txtPosition和txtActor应用相同的修复。

+0

啊,我知道这很简单!谢谢彼得。 – mrkd1991 2014-10-17 03:39:20

1
  1. 请勿混淆null和空字符串。他们不是一回事。
  2. 如果您明确将其设置为空,则任何控件的Text属性将永远为null。在大多数情况下,您根本不需要检查该属性;只是比较一个空字符串就足够了
  3. String.IsNullOrEmpty()String.IsNullOrWhitespace()方法是你的朋友。
  4. 没有理由嵌套If块。只需使用警卫条款检查一个跟着另一个清洁代码:

private void btnInsert_Click(object sender, EventArgs e) 
{ 

    if (string.IsNullOrWhitespace(txtPosition.Text)) 
    { 
     MessageBox.Show("Please enter a position"); 
     return; 
    } 
    if (string.IsNullOrWhitespace(txtActorName.Text)) 
    { 
     MessageBox.Show("Please enter an Actor Name"); 
     return; 
    } 
    int Position; 
    if (!int.TryParse(txtPosition.Text, out Position)) 
    { 
     MessageBox.Show("Please enter a number in the position field"); 
     return; 
    } 

    InsertIntoArrayList(txtActorName.Text, Position); 
    PopulateActors(); 
} 
0

如果您还想检查空格,也可以使用if (!string.IsNullOrWhiteSpace(txtPosition.Text)。虽然性能方面比较慢,但使用标准的方法是使用标准的另一种方法来检查,即使用标准的string.IsNullOrEmtpy

if (txtPosition.Text != string.Empty)

0

试试这个,它可能会解决您的问题

ActorName = txtActorName.Text;

Position = int.Parse(txtPosition.Text ==“”?“0”:txtPosition.Text);