我正在使用VS2010工具箱中的monthCalendar控件,但我在尝试将日历日期设置为“可选”时遇到了困难。选择的日期将存储在一个数组中,其余的输入由用户输入。我觉得,经过几个小时的搜索,找到了与我的问题无关的结果,在这里发帖将是最好的解决方案。任何帮助都是非常感谢的。
int currentIndex;
int arraySize = 0;
Meeting[] meetingArray = new Meeting[100];
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
e.Start.ToShortDateString();
}
private void calendarSaveChangesButton_Click(object sender, EventArgs e)
{
Meeting m = new Meeting();
m.title = textBoxTitle.Text;
m.location = textBoxLocation.Text;
m.startTime = textBoxStartTime.Text;
m.endTime = textBoxEndTime.Text;
m.notes = notesTextBox.Text;
meetingArray[arraySize] = m;
currentIndex = arraySize;
arraySize++;
meetingListBox.Enabled = true;
textBoxTitle.Text = "";
textBoxLocation.Text = "";
textBoxStartTime.Text = "";
textBoxEndTime.Text = "";
notesTextBox.Text = "";
meetingListBox.Items.Add(m);
}发布于 2013-02-22 02:29:00
转到表单中的monthCalendar并单击鼠标右键。选择属性。然后单击Events并双击DateSelected。
这将由VS2010生成:
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
}在该方法内部,使用e.Start.ToShortDateString()来捕获所选日期,并将其分配给数组的适当索引。
在评论/新发布的代码中针对您的问题进行更新:
根据我对你的项目的了解,这可能是对你最好的解决方案(不需要完全重组所有东西)。添加另一个文本框(将其命名为dateBox)。然后在DateSelected方法中添加以下代码:
dateBox.Text = e.Start.ToShortDateString();然后,在您已经发布的Click方法中(假设您的Meeting类具有某种日期属性)添加以下代码:
m.Date = dateBox.Text;更新
或者(更简单的是--我不知道为什么我之前不建议这样做),你可以在你的表单中定义一个叫做dateStr的全局string,并使用它保存会议日期的信息,直到你点击“保存更改”,然后将它分配给m.Date。这将是一个比创建另一个文本框简单得多的解决方案(这可能是您无论如何都要避免的)。
发布于 2013-02-22 02:33:09
MonthCalendar控件有几个您应该能够访问的属性: SelectionRange、SelectionStart和包含所选日期值的SelectionEnd。
https://stackoverflow.com/questions/15009412
复制相似问题