使用属性更改标签的文本

时间:2013-07-12 07:16:09

标签: ado.net foreach label

我正在使用我的C#ADO.NET应用程序。我已将SQL Server数据库与C#app连接,我可以执行简单的CRUD操作。我想让我的应用程序在我的数据库中有人生日时打开我的提醒表单,所以我查询了所有今天生日的人都在我的查询中,并使用我的提醒表单中的属性更改标签的文本有生日的人的姓名和姓氏。现在我不知道如何在我的查询中有多个人生日时更改下一个标签的文本...我不知道如何在我的foreach循环中获取下一个元素...

这是我的代码:

    Form2 forma = new Form2();
    TBirthDayEntities today_born = new TBirthDayEntities();

    public Form1()
    {
        InitializeComponent();
        timer1.Tick += new EventHandler(timer1_Tick);
        timer1.Interval = 1000;
        timer1.Enabled = true;
        timer1.Start();
    }

    private Boolean provjera_rodj()
    {
        Boolean flag = false;
        int cnt = 0;


        IQueryable<TBD> query;
        using (var data = new TBirthDayEntities())
        {
            query = (from x in data.TBD
                     where x.BirthDay.Day == System.DateTime.Now.Day && x.BirthDay.Month == System.DateTime.Now.Month
                     select x);

            foreach (var x in query)
            {
                    today_born.TBD.Add(x);
                    cnt += 1;
                    flag = true;


            }
        }





        switch (cnt)
        {
            case 1:
                {
                    foreach (var x in today_born.TBD)
                    {
                                forma.p_label2 = x.FName + " " + x.LName;
                    }
                    break;
                }
            case 2:
                {
                    foreach (var x in today_born.TBD)
                    {
                        forma.p_label2 = x.FName + x.LName;
                        forma.p_label3 = x.FName + x.LName; //wrong
                    }
                    break;
                }

        }



        return flag;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        Boolean flag = provjera_rodj();
        if (flag == true)
        {
            forma.Show();
            timer1.Stop();
        }

    }

1 个答案:

答案 0 :(得分:0)

    switch (cnt)
    {
        case 1:
        case 2:
            {
                var lstLabel = new List<Label>()
                {
                    forma.p_label2
                    , forma.p_label3
                };
                for(int i = 0; i < today_born.TBD.Count; i++)
                {
                    var x in today_born.TBD[i];

                    lstLabel[x].Text = x.FName + x.LName;
                }
                break;
            }

    }

编辑:

    switch (cnt)
    {
        case 1:
        case 2:
            {
                var lstLabel = new List<Action<string>>()
                {
                    new Action<string>(s =>forma.p_label2 = s)
                    , new Action<string>(s =>forma.p_label3 = s)
                };
                for(int i = 0; i < today_born.TBD.Count; i++)
                {
                    var x = today_born.TBD[i];

                    lstLabel[x](x.FName + x.LName);
                }
                break;
            }

    }
相关问题