C#或vba复选框

时间:2016-12-22 11:43:36

标签: c# windows checkbox

我是新来的,我有一个问题(我认为解决方案很简单,但我不能单独解决这个问题)。我必须在userform上抛出一些复选框(这很简单),但是当我写这样的东西时:

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

总是得到“ok1”MsgBox ......

任何想法我做错了什么?谢谢你的帮助。

5 个答案:

答案 0 :(得分:1)

if语句将始终进入第一个为true的块。因此,如果选中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";
  }
}

答案 1 :(得分:1)

从代码我看到checkbox1.checked是否为真然后#34; ok1&#34;应该展示,第二次评估永远不会被废弃。如果checkbox1.checked为false,则仅评估第三个选项,并且永远不应评估第二个选项。应该更像是:

if (checkBox1.Checked)
    {
        if (checkBox2.Checked)
            {
                 MessageBox.Show("ok2");
            }

       else
           {
                 MessageBox.Show("ok1");
            }
    }
 else 
    {
        MessageBox.Show("co nie tak");
    }

答案 2 :(得分:0)

正如目前所写,它不可能进入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");
}

答案 3 :(得分:0)

我在控制台上试过这个,这可能是你需要的逻辑。内联注释将为您提供有关正在做什么的一些见解:

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

答案 4 :(得分:-2)

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