2013-01-22 193 views
1

我正在创建一个小程序,该程序很快就会发展为一个时间表,我正在练习使用C#MonthCalendar。到目前为止,我已经设法在文本标签上显示选择的日期,但是我正在寻找实现稍微不同的东西,我正在努力。月份周一至周日的日历显示日期

我在表单上放置了七个标签。当我点击某个日期时,我希望所有七个标签都填入日期,这些日期对应于所选日期所在的特定星期。任何人都可以建议我需要做什么来实现这一点。

我想解决的问题: 可以说我从日历中选择一个日期。例如22/01/1013等我想显示所有在那个星期,从21开始的日期标签 - 2012年1月27日

为了进一步阐明这一点:

这是我拿出接口: enter image description here

这我到目前为止的代码:

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(); 
    } 
} 
+0

那么,这是什么部分你坚持? – millimoose

+0

我被困在我需要显示整个星期的日期的部分 – Tacit

+1

这并不十分具体。你难以计算出要显示的日期吗?如何将工作日与标签关联? – millimoose

回答

2

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(); 
    } 
} 
+0

谢谢,但我使用Winforms – Tacit

+0

如何做我阻止它显示时间我只想要日期 – Tacit

+0

而我希望它从星期一开始 – Tacit

2

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

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

相关问题