C#如何检查所有数组元素是否可见

时间:2017-01-21 22:19:53

标签: c#

我的程序使用立方体形式创建5个不同的标签,它们只是下拉。当我按下它们时,它们变得不可见。我想检查它们是否都是隐形的,但不知道该怎么做。尝试通过这个网站,找到一个bool的解决方案,但它只是不按我的方式工作。此外,当我的标签出现时,您只能看到其中的4个。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    Label [] kubeliai = new Label [5];
    int poz = 100;

    private void Form1_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < kubeliai.Length; i++)
        {
            kubeliai[i] = new Label();
            Controls.Add(kubeliai[i]);
            Random pos = new Random();
            kubeliai[i].Top = 50;
            kubeliai[i].Left = poz;
            poz += pos.Next(50, 200);
            kubeliai[i].BackColor = Color.Red;
            kubeliai[i].Height = 20;
            kubeliai[i].Width = 20;
            kubeliai[i].Click += new EventHandler(kubelio_clickas);
        }

        Timer kritimo_laikrodis = new Timer();
        kritimo_laikrodis.Interval = 10;
        kritimo_laikrodis.Tick += new EventHandler(laikrodis);
        kritimo_laikrodis.Enabled = true;
    }
    void kubelio_clickas (object sender, EventArgs e)
    {
        ((Label)sender).Visible = false;
    }
    void laikrodis (object sender, EventArgs e)
    {
        for (int i = 0; i < kubeliai.Length; i++)
        {
            kubeliai[i].Top += 1;
            if (kubeliai.All.Visible == false) // this is an error
            {
                kubeliai[i].Visible = true;
                kubeliai[i].Top = 50;
                Random pos = new Random();
                poz += pos.Next(50, 200);

            }
        }
    }

2 个答案:

答案 0 :(得分:0)

使用Linq,您可以检查是否所有内容都以此方式隐藏

var areAllInvisible = kubeliai.All(l => l.Visible == false);
if (areAllInvisible)
{
    // do something
}

答案 1 :(得分:0)

  

当我的标签出现时,您只能看到其中的4个。

这是因为您选择随机数字的方式是每次都选择相同的数字,因此您将标签放在彼此的顶部。阅读Random()文档的第一段:

  

通过调用默认构造函数紧密连续创建的不同随机对象将具有相同的默认种子值,因此将生成相同的随机数集。使用单个Random对象生成所有随机数可以避免此问题。

在您的班级定义中使用new Random(),如下所示:

Label [] kubeliai = new Label [5];
Random pos = new Random();

并在程序中的其他位置删除它。