我正在创建一个小程序,很快就会发展成一个时间表,我正在练习使用C#MonthCalendar
。到目前为止,我已经设法将选定的日期显示在文本标签上,但是我希望看到一些稍微不同的东西,我正在努力。
我在表单上放了七个标签。当我点击日期时,我希望所有七个标签都填充与所选日期所在的特定周相对应的日期。任何人都可以建议我需要做些什么才能实现这一目标。
我想要解决的问题: 假设我从日历中选择了一个日期。 E.g 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();
}
}
答案 0 :(得分:2)
首先,找出一周的第一天。你可以这样做this。然后从这个日期开始,将目标文本分配给每个标签。
您可以在7行代码中执行后者,每个标签对应一行,或者您可以将标签放在数组中,在表单初始化代码中并遍历数组。请注意,将标签放入数组仍需要7行。最后,您可以使用Form.Controls或Form.FindControl根据名称在循环中查找所有7个标签。
答案 1 :(得分:2)
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();
}
}