只允许数组中的10个内容为真

时间:2016-08-07 13:15:53

标签: c# arrays

public static bool[] chosen = new bool[27];

private void pictureBoxTopLeft3_Click(object sender, EventArgs e)
    {
        n = 18;
        cardSelect();
        highlightCards();
    } // There are many of these.

public static void cardSelect()
    {
        if (chosen[n] == false)
        {
            chosen[n] = true;
        }
        else if (chosen[n] == true)
        {
            chosen[n] = false;
        }
    }

有多个图片框。单击图片框后,在此示例中图片框为“pictureBoxLeft3”,它运行“cardSelect”。这会在“已选择”数组中将该图片框设置为true。如果再次单击,则将其设置为false。

共有20个图片框。我怎样才能这样做,所以在“选择”的数组中一次只能将其中的10个设置为true。谢谢!

3 个答案:

答案 0 :(得分:0)

您可以拥有一个全局变量selectedCount,每当用户选择一张图片时,您将selectedCount增加1.如果selectedCount< 10位用户可以选择更多图片。

答案 1 :(得分:0)

您可以存储状态或动态计算。

存储状态:

static int chosenCount = 0;

public static void cardSelect()
{
    if (chosen[n] == false)
    {
        if (chosenCount < 10)
        {
            chosen[n] = true;
            chosenCount++;
        }
        // else show a message maybe?
    }
    else if (chosen[n] == true)
    {
        chosen[n] = false;
        chosenCount--;
    }
}

计算:

using System.Linq;

public static void cardSelect()
{
    if (chosen[n] == false)
    {
         if (chosen.Count(c => c) < 10)
         {
            chosen[n] = true;
         }
    }
    else if (chosen[n] == true)
    {
        chosen[n] = false;
    }
}

答案 2 :(得分:0)

您可以使用linq

尝试这种方式
public static bool[] chosen = new bool[27];

public static void cardSelect()
    {

        if (chosen[n] == false && chosen.Count(a => a == true) < 10)
        {
            chosen[n] = true;
        }
        else if (chosen[n] == true)
        {
            chosen[n] = false;
        }
    }