【问题标题】:Month Calendar display dates for Monday - Sunday [closed]周一至周日的月历显示日期[关闭]
【发布时间】:2013-01-22 00:33:41
【问题描述】:

我正在创建一个小程序,它很快就会发展成一个时间表,我正在练习使用 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();
    }
}

【问题讨论】:

  • 那么,你坚持的是哪一部分?
  • 我卡在需要显示整周日期的部分
  • 这还不够具体。您是否难以确定要显示哪些日期?如何将工作日与标签相关联?
  • 您所坚持的不是考虑用户输入或更改第二个日期的方法。第三次等等等等。你不能不先思考就写代码。
  • 您想显示所选日期的那一周的 7 天 :)

标签: c# winforms visual-studio-2010 monthcalendar


【解决方案1】:

来自zespri 的回答,我从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();
    }
}

【讨论】:

  • 谢谢,但我正在使用 winforms
  • 如何阻止它显示我只想要日期的时间
  • 我希望从星期一开始
  • @Tacit,我更新了我的答案,你所要做的就是在 winforms 中迁移它:)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2020-08-12
    相关资源
    最近更新 更多