MonthCalendar不会在表单C#上显示

时间:2013-08-28 18:09:42

标签: c# windows winforms monthcalendar

我不想创建一个必须能够在表单上的给定点显示日历的类/函数。 然后返回所选日期。

这就是我提出的:

public static string ShowCalendar(Point locatieCalender)
    {
        MonthCalendar calender = new MonthCalendar();
        calender.Location = locatieCalender;
        calender.Show();
        calender.Visible = true;

        string date = calender.SelectionRange.Start.ToShortDateString();
        DateTime dateValue = DateTime.Parse(date);
        string dateForTextbox = dateValue.ToString("dd-MM-yyyy");

        calender.Hide();
        return dateForTextbox;

       }

问题是日历不会在表格上显示。

我很感激这方面的一些帮助。 提前致谢

好的,我已将功能更改为:

 public static string ShowCalendar(Point locatieCalender, Form F1)
    {
        MonthCalendar calender = new MonthCalendar();
        calender.Location = locatieCalender;
        calender.Show();
        calender.Visible = true;
        calender.BringToFront();
        calender.Parent = F1;
        string date = calender.SelectionRange.Start.ToShortDateString();
        DateTime dateValue = DateTime.Parse(date);

        string dateForTextbox = dateValue.ToString("dd-MM-yyyy");

        //calender.Hide();
        return dateForTextbox;

    }

函数调用:

string dateForTextbox = HelpFunction.ShowCalendar(calenderLocatie, this);

现在日历显示但没有返回任何字符串。 我已尝试过事件,但由于静态功能不起作用。

2 个答案:

答案 0 :(得分:1)

您需要将其作为控件添加到表单中。有关如何执行此操作的帮助,请参阅此链接: http://msdn.microsoft.com/en-us/library/kyt0fzt1.aspx

例如:

Controls.Add(calendar);

答案 1 :(得分:1)

删除代码中的calender.Hide()。并通过Controls.AddParent属性将其添加到您的表单中,如下所示:

   //....
    string dateForTextbox = dateValue.ToString("dd-MM-yyyy");
    calender.Parent = yourForm;
    return dateForTextbox;
   }

我认为您应该在MonthCalendar课程的某处声明Form变量,在ShowCalendar而不是本地变量calendar中使用它。