I don't think there's a clean way to do it. This seems to work well though:
Code:
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
string[] days = new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
DateTime selectedDate = dateTimePicker1.Value.Date;
string weekDay = selectedDate.DayOfWeek.ToString();
int index = -1;
for(int i = 0;i < days.Length;++i)
{
if(days[i] == weekDay)
{
index = i;
break;
}
}
if(index == -1)
{
MessageBox.Show("I don't know WTF day " + weekDay + " is.", "Error");
return;
}
DateTime startDate = selectedDate - new TimeSpan(index, 0, 0, 0);
DateTime[] weekDates = new DateTime[7];
for (int i = 0; i < 7; ++i)
weekDates[i] = startDate + new TimeSpan(i, 0, 0, 0);
StringBuilder sb = new StringBuilder();
foreach (DateTime date in weekDates)
sb.Append(date + "\n");
MessageBox.Show(sb.ToString());
}