0

1つの「If」に2つの「textboxes.Text」を含む1つのコマンドを使用したいと思います。つまり、このコマンドを実行したとき:

If (textBox1.Text == ("admin")) + (textBox2.Text == ("admin))またはこれ If (textBox1.Text == ("admin) , textBox2.Text == admin)) は正しくありません。

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

  private void Label_Click(object sender, EventArgs e)
     {
         if (textBox2.Text == ("admin")) + (textBox1.Text == ("admin"))
         {
             Label.Text = "right";
         }
         else
         {
             Label.Text = "wrong";
             errorProvider1.SetError(errorprovider, "Wrong Username or Password");
         }

つまり、私がやりたかったのは、2つのテキストボックスのいずれかが間違っている場合、ラベルにパスワードまたはユーザー名が間違っていることが示されるということです...何かアイデアはありますか?

4

8 に答える 8

5

ifステートメントの構文は次のとおりです。

if (condition) body

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

if (textBox2.Text == ("admin")) + (textBox1.Text == ("admin"))

...これはtextBox2.Text == ("admin")条件として扱われ、次に+ (textBox1.Text == ("admin"))本体として使用しようとしますが、これは無効です。問題は次のとおりです。

  • 条件を早く閉じています
  • 「and」に間違った演算子を使用しています

さらに、明白な理由もなく文字列リテラルを括弧で囲んでいるため、読みやすさが低下しています。だからあなたが本当に欲しいのは:

if (textBox2.Text == "admin" && textBox1.Text == "admin")

他の回答では、-||の代わりに使用することが提案されていることに注意してください。これはOR条件であり、いずれかのテキストボックスの値が。の&&場合は「Right」の結果が表示されます。それはあなたが望んでいることではないと思います。admin

于 2012-10-01T16:30:04.103 に答える
1
if (textBox1.Text == "admin" && textBox2.Text == "admin")
    Label.Text = "right";
else
    Label.Text = "wrong";

&&ブールAND演算子です。 ||ブールOR演算子です。

于 2012-10-01T16:27:42.167 に答える
1

C#演算子のMSDNページを確認してください。

||(条件付きまたは)または(条件付きおよび)を探しています&&

条件演算子のもう1つの名前は「短絡」です。これは、必要な場合にのみ2番目の条件を評価するためです。つまり、がfalseのa && b場合a、式全体がfalseである必要があるため、式bは評価されません。これはb、副作用がある場合、またはa評価するのが安全かどうかを意味する場合に重要bです。例:

if (MethodA() && MethodB()) //...

ここで、MethodBは、MethodAがtrueを返した場合にのみ呼び出されます。

if (o != null && o.Equals(p)) //...

NullReferenceExceptionこれは、oがnullの場合から私たちを救うので、安全です(そして一般的です) 。

|これらの演算子(および)の非短絡バージョン&をブール式で使用することもできますが、これは非常にまれであるため、ほとんどのプログラマーは一見間違いとしてそれを読みます。コードで常に両方の式を評価する場合は、より明示的にすることをお勧めします。

于 2012-10-01T16:28:29.380 に答える
0
if(textBox2.Text == "admin" && textBox1.Text == "admin")
{
    //both admin
}
于 2012-10-01T16:28:12.377 に答える
0

シンプルなものが必要なようですか?二重垂直パイプを使用する||

private void Label_Click(object sender, EventArgs e)
{
        if (textBox2.Text == ("admin") || textBox1.Text == ("admin"))
        {
            Label.Text = "right";
        }
        else
        {
            Label.Text = "wrong";
            errorProvider1.SetError(errorprovider, "Wrong Username or Password");
        }
}
于 2012-10-01T16:28:36.290 に答える
0
 private void Label_Click(object sender, EventArgs e)
    {
        if ((textBox2.Text == "admin") || (textBox1.Text == "admin"))
        {
            Label.Text = "right";
        }
        else
        {
            Label.Text = "wrong";
            errorProvider1.SetError(errorprovider, "Wrong Username or Password");
        }
    }
于 2012-10-01T16:28:39.683 に答える
0

C#では「&&」である「and」演算子を使用する必要があります。

if (textBox1.Text == ("admin")) && (textBox2.Text == ("admin))
于 2012-10-01T16:28:56.053 に答える
0

あなたの表現は正しくありません。正しい構文は次のとおりです。

if (A && B) { ... }

だからあなたの場合は

if(textBox1.Text.Equals("admin") && textBox2.Text.Equals("admin")) { ... }

このロジックで混乱する場合は、ブール代数について少し読んでおくとよいでしょう。

私たち全員が提案した他の変更にも注意してください。余分な角かっこがありEquals()、文字列の比較にも使用する必要があります。

于 2012-10-01T16:29:19.343 に答える