0

我正在使用 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);
    }
4

2 回答 2

2

转到表单中的monthCalendar 并右键单击。选择属性。然后单击事件并双击 DateSelected。

这将由 VS2010 生成:

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{

}

在该方法内部,e.Start.ToShortDateString()用于捕获所选日期并将其分配给数组的适当索引。

在评论/新发布的代码中更新您的问题:

根据我对您项目的了解,这可能是您的最佳解决方案(无需完全重组所有内容)。添加另一个文本框(将其命名为 dateBox)。然后在 DateSelected 方法中添加以下代码:

dateBox.Text = e.Start.ToShortDateString();

然后在您发布的 Click 方法中(假设您的 Meeting 类具有某种 Date 属性)添加以下代码:

m.Date = dateBox.Text;

更新

或者(更简单 - 我不知道为什么我之前不建议这样做),您可以string在名为 dateStr 的表单中定义一个全局变量,并使用它来保存会议日期的信息,直到您单击“保存更改”,然后将其分配给m.Date. 这将是一个比创建另一个文本框更简单的解决方案(这可能是您无论如何都试图避免的)。

于 2013-02-21T18:29:00.273 回答
0

MonthCalendar控件具有一些您应该能够访问的属性:SelectionRange、SelectionStart 和 SelectionEnd,其中包含所选日期的值。

于 2013-02-21T18:33:09.223 回答