2013-01-22 191 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個標籤。

相關問題