1

我正在创建一个小程序,它很快就会发展成一个时间表,我正在练习使用 C# MonthCalendar。到目前为止,我已经设法将所选日期显示到文本标签上,但是我正在寻找一些稍微不同的东西,我正在努力解决这个问题。

我在一个表格上放置了七个标签。当我单击一个日期时,我希望所有七个标签都填充与所选日期所在的特定周相对应的日期。谁能建议我需要做些什么来实现这一目标。

我要解决的问题:假设我从日历中选择一个日期。例如 22/01/1013 等标签上我想显示从 2012 年 1 月 21 日至 27 日开始的那一周的所有日期

为了进一步澄清这一点:

这是我想出的界面: 在此处输入图像描述

到目前为止我的代码:

 public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }
        private void button1_Click(object sender, EventArgs e)
        {
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        DateTime dt = DateTime.Now;
        label8.Text = dt.ToString();
    }

    private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
    {
        label1.Text = monthCalendar1.SelectionStart.ToString();
    }
}
4

2 回答 2

2

From the answer of zespri and I got this idea from this answer.

class Program
{
    static void Main(string[] args)
    {
        DateTime t = DateTime.Now; //Your selected date from Calendar
        t -= new TimeSpan((int)t.DayOfWeek, 0, 0, 0);
        Console.WriteLine("\tstart: " + t.Date.ToShortDateString());
        Console.WriteLine("\tend: " + t.Date.AddDays(7).ToShortDateString());
        Console.WriteLine("\t" + new string('-', 25));

        for (int i = 0; i < 7; i++)
        {
            var d = t.AddDays(i);
            if (d.DayOfWeek >= DayOfWeek.Monday && d.DayOfWeek <= DayOfWeek.Friday) //Range: Monday to Friday
                Console.WriteLine(d.DayOfWeek + " : " + d);
        }
        Console.ReadLine();
    }
}
于 2013-01-22T01:28:45.583 回答
2

首先,找出一周的第一天。你可以这样。然后从该日期开始将目标文本分配给每个标签。

您可以在 7 行代码中完成后者,每个标签一个,或者您可以将标签放在一个数组中,在您的表单初始化代码中并遍历该数组。请注意,将标签放入数组仍需要 7 行。最后,您可以使用Form.ControlsForm.FindControl根据名称循环查找所有 7 个标签。

于 2013-01-22T01:13:14.533 回答