0

私は C# ADO.NET アプリに取り組んでいます。SQL Server データベースを C# アプリに接続し、簡単な 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();
        }

    }
4

1 に答える 1

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

    }
于 2013-07-12T07:33:34.490 に答える