2012-03-05 8 views
-1

私が入力した内容に関係なく、常に真です。ユーザーがデータを入力できるテキストボックスからデータを取得しています。何が間違っていますか? Utility.ValidNameとUtility.Emailはtrueまたはfalseを返します。あなたはいつもどんな、trueを返しません有効なデータはフォーム

チェック

string username = null; 
string email = null; 

username = textBox1.Text; 
email = textBox2.Text; 

bool vusernam = false; 
bool vemail = false; 

vusernam = Utility.ValidName (username); 
vemail = Utility.ValidEmail (email); 

if (vusernam == true && vemail == true) 
{ 
    Utility.WelcomeMessage (string.Format ("Hello {0}\nEMail: {1}\nWelcome!" , username , email)); 
    secondForm.Show (); 
    this.Hide (); 
} 
else 
{ 
    MessageBox.Show ("Please Enter a Username and Email Adress!"); 
} 

有効なユーザ名とメール

public static bool ValidEmail (string email) 
    { 
     string strTest = email; 
     Regex pattern = new Regex (@"(?<name>\S+)@(?<domain>\S+)"); 
     Match match = pattern.Match (strTest); 

     if (String.IsNullOrEmpty (email) || !match.Success) 
     { 
      Console.Write ("\nInvalid Email!"); 
     } 
     return true; 
    } 

    public static bool ValidName (string name) 
    { 
     string strTest = name; 


     if (String.IsNullOrEmpty (name)) 
     { 


      Console.Write ("\nInvalid Name!"); 


     } 
     return true; 
    } 
+3

ValidName()とValidEmail()のコードを表示できますか?あなたの問題はおそらくそこにあるようです – psubsee2003

+0

何がうまくいかないのですか?あなたが悪いデータを与えるとき、validnameとemailは何を返しますか?デバッガを使ってそれを踏んだことはありますか?ありがとう。 –

答えて

2

Console.Writeの後にfalseを追加します。単にエラーメッセージを出力しても、検証は失敗しません。

public static bool ValidName (string name) 
{ 
    string strTest = name; 

    if (String.IsNullOrEmpty (name)) 
    { 
     Console.Write ("\nInvalid Name!"); 
     return false; 
    } 
    return true; 
} 

サイドノート:

if (vusernam == true && vemail == true) 

は単に

if(vusernam && vemail) 

string strTest = name;に減少させることができる、全く目的を果たすないように見えます。

+0

私はそれがifステートメントの内部にあれば自動的にfalseを返すと仮定しました。 –

+2

1+ブール値を別のブール値と比較するコードの臭いについて言及しています。これはしばしば不正な命名を示し、またコードを盛り上げます。これにより、読みやすくなります: 'if(isValidUserName && isValidEmail)' –

0

あなたのメソッドが常にtrueを返す理由は、trueだけを返すためです。

public static bool ValidEmail (string email) 
{ 
    Regex pattern = new Regex(@"(?<name>\S+)@(?<domain>\S+)"); 
    Match match = pattern.Match(email); 

    return !String.IsNullOrEmpty(email) && match.Success 
} 

public static bool ValidName (string name) 
{ 
    return !String.IsNullOrEmpty(name); 
} 
関連する問題