0

個々の条件に基づいて複数のフィールド/コントロールを検証しようとしています。問題は、メッセージボックスではなく、特定のコントロールに基づいてエラーを示す個別のラベルがあることです。これを行うためのより効率的な方法はありますか?

コードは次のとおりです。

if (txtPhone. Text. Length <= 0) 
{ 
lblPhoneRequired.Visible = true; 
} 
else 
{ 
lblPhoneRequired.Visible = false; 
}

if (txtName. Text. Length <= 0) 
{ 
lblNameRequired. Visible = true; 
} 
else 
{ 
lblNameRequired. Visible = false; 
}

最後に、これを次のようなPublicメソッドにラップしてみました。

public void validation() {
if (txtPhone. Text. Length <= 0)
{ 
lblPhoneRequired.Visible = true; 
} 
else 
{ 
lblPhoneRequired.Visible = false; 
}

if (txtName. Text. Length <= 0) 
{ 
lblNameRequired. Visible = true; 
} 
else 
{ 
lblNameRequired. Visible = false; 
}
}

次に、ボタンクリックイベントでメソッドを呼び出しますが、機能しません。

private void btnSample_Click(object sender, EventArgs e) 
validation(); 
}

これは新しい領域なので、私の無知に耐えてください。

4

2 に答える 2

3

コードを短くすることができます:

lblPhoneRequired.Visible = (txtPhone.Text.Length == 0); 
lblNameRequired.Visible =  (txtName.Text.Length  == 0); 

これはアプローチよりも効率的ではありませんが、冗長性が低く、読みやすい可能性があることに注意してください。

もちろん、別のエラーメッセージで単一のコントロールを使用することもできます。

lblError.Visible =   (txtPhone.Text.Length == 0)
                  || (txtName.Text.Length  == 0);
if((txtPhone.Text.Length == 0) && (txtName.Text.Length  == 0))
     lblError.Text = "Enter phone number and name";
else if(txtPhone.Text.Length == 0)
     lblError.Text = "Enter phone number";
else if(txtName.Text.Length == 0)
     lblError.Text = "Enter name";
else
    lblError.Text = String.Empty;

Validatingただし、すべてのコントロールが持つイベントとCausesValidationプロパティを確認する必要があります。

于 2012-10-25T19:40:29.637 に答える
0
if (txtPhone. Text. Length <= 0)
  lblPhoneRequired.Visible = lblNameRequired. Visible = true; 
else
  lblPhoneRequired.Visible = lblNameRequired. Visible = false; 
于 2012-10-25T19:46:32.410 に答える