0

我想使用一个命令,该命令将在一个“If”中包含两个“textboxes.Text”。我的意思是当我执行此命令时:

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");
         }

即我想做的事情是,如果两个文本框之一是错误的,标签将显示密码或用户名错误......有什么想法吗?

4

8 回答 8

5

语句的语法if是:

if (condition) body

您当前的代码是:

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

……这是textBox2.Text == ("admin")当作条件,然后试图+ (textBox1.Text == ("admin"))用作身体,这是无效的。问题是:

  • 你过早关闭条件
  • 您对“和”使用了错误的运算符

此外,您无缘无故地在字符串文字周围加上括号,从而降低了可读性。所以你真正想要的是:

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

请注意,其他答案建议使用||而不是&&- 这将是一个 OR 条件,如果任何一个文本框的值为admin. 我怀疑这不是你想要的。

于 2012-10-01T16:30:04.103 回答
1

检查C# Operators上的 MSDN 页面。

您正在寻找||(条件或)或&&(条件与)。

条件运算符的另一个名称是“短路”,因为它们只在需要时评估第二个条件。换句话说,a && b当 , whena为假时,整个表达式必须为假,因此不计算表达式 b。当b有副作用或a暗示评估是否安全时,这一点很重要b。例子:

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

此处,仅当 MethodA 返回 true 时才调用 MethodB。

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

这是安全的(也很常见),因为它使我们免于NullReferenceExceptiono 为 null 的情况。

|您还可以将这些运算符 (和)的非短路版本&与布尔表达式一起使用,但这种情况非常罕见,以至于大多数程序员乍一看会误认为它;如果您希望代码始终评估两个表达式,最好更明确。

于 2012-10-01T16:28:29.380 回答
1
if (textBox1.Text == "admin" && textBox2.Text == "admin")
    Label.Text = "right";
else
    Label.Text = "wrong";

&&是布尔 AND 运算符。 ||是布尔 OR 运算符。

于 2012-10-01T16:27:42.167 回答
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

您需要使用“and”运算符,即 C# 中的“&&”。

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 回答