C#或VBA复选框



我是新来的,我有一个问题(我认为解决方案很简单,但我无法单独解决这个问题)。我必须在Userform上扔几个复选框(这很简单),但是当我写这样的内容时:

if(checkBox1.Checked)
{
    MessageBox.Show("ok1");
}
else if(checkBox1.Checked && checkBox2.Checked)
{
    MessageBox.Show("ok2");
}
else
{
    MessageBox.Show("co nie tak");
}

始终获取" OK1" MSGBOX ...

有什么想法我做错了什么?感谢您的帮助。

if语句将始终进入第一个块。因此,如果检查了Checkbox1,您将始终获得" OK1"。您永远无法进入第二个块(" OK2"),因为如果是真的,则第一个检查也将是正确的。

我认为您想切换支票:

if(checkBox1.Checked && checkBox2.Checked)
{
    MessageBox.Show("ok2");
}
else if(checkBox1.Checked)
{
    MessageBox.Show("ok1");
}
else
{
    MessageBox.Show("co nie tak");
}

您可能还希望通过添加字符串来建立您的字符串。 =表示添加到字符串的末端。

我的示例代码只是一个示例,因为我真的不知道您要做什么,但这可能会给您一些想法。

if (checkBox1.checked )
{
  mic.HTMLBody = "1) Example1";
}
if ( checkBox2.checked )
{
  mic.HTMLBody += "<br>"""2) Example2";
  if ( ComboBox2.Text == "Pan" )
  {
     mic.HTMLBody += "<br>Pana";
  }
}

从代码中我查看checkbox1。检查是否为true,然后" OK1"显示,第二次评估将永远不会避免。如果checkbox1.checked为false,则只能评估第三个选项,并且绝对不要评估第二个选项。应该更像:

if (checkBox1.Checked)
    {
        if (checkBox2.Checked)
            {
                 MessageBox.Show("ok2");
            }
       else
           {
                 MessageBox.Show("ok1");
            }
    }
 else 
    {
        MessageBox.Show("co nie tak");
    }

当前编写,它不可能输入else if,因为每当else if条件为真时,if条件也是正确的。

它从上到向下,输入了第一个,其余的都被忽略了。

相反,您应该按以下方式切换其位置:

if(checkBox1.Checked && checkBox2.Checked)
{
    MessageBox.Show("ok2");
}
else if(checkBox1.Checked)
{
    MessageBox.Show("ok1");
}
else
{
    MessageBox.Show("co nie tak");
}

有点不清楚您真正想要显示的内容,但是如果您希望它首先显示ok1,然后可以显示ok2,则可以这样做:

if(checkBox1.Checked)
{
    MessageBox.Show("ok1");
    if(checkBox2.Checked) {
        MessageBox.Show("ok2");
        //MessageBox.Show("ok1 ok2"); //If you want to show them both at the same time
    }
}
else
{
    MessageBox.Show("co nie tak");
}

我在控制台上尝试了这个,这可能是您需要的逻辑。内联评论将使您对正在做什么的事情有一点了解:

check1 = true;
check2 = true;
if (check1)
{
    if (check2)
    {
        // Prints if BOTH check1 and check2 are TRUE
        Console.WriteLine("ok2");
    }
    else
    {
        // Prints if ONLY check1 is TRUE
        Console.WriteLine("ok1");
    }
}
else
{
    // Prints if BOTH check1 and check2 are FALSE
    Console.WriteLine("co nie tak");
}
        bool Check = checkBox1.Checked;
        bool Check2 = checkBox2.Checked;
        if (Check == true && Check2 == true)
        { MessageBox.Show("ok 1 & 2"); }
        if (Check == true) 
        { MessageBox.Show("ok 1"); }
        if (Check2 == true)
        { MessageBox.Show("ok 2 "); }
        else
        { MessageBox.Show("Not Checked"); }

最新更新