C# MonthCalendar未显示在表格C中

C# MonthCalendar未显示在表格C中,c#,windows,winforms,monthcalendar,C#,Windows,Winforms,Monthcalendar,我不想创建一个类/函数,它必须能够在窗体上的给定点显示日历。 然后返回所选日期 这就是我想到的: public static string ShowCalendar(Point locatieCalender) { MonthCalendar calender = new MonthCalendar(); calender.Location = locatieCalender; calender.Show(); calend

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

这就是我想到的:

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);
现在日历显示,但没有返回字符串。
我尝试过使用event,但由于静态函数无法工作。

您需要将其作为控件添加到表单中。有关如何执行此操作的帮助,请参阅此链接:

例如:

Controls.Add(calendar);
移除日历。隐藏在代码中。并通过控件将其添加到窗体中。添加或父属性,如下所示:

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

我认为您应该在表单类的某个位置声明MonthCalendar变量,在ShowCalendar中使用它,而不是在本地变量calendar中使用它。

为什么要调用calendar.Hide?我希望calendar在选择日期后隐藏。但是由于静态方法,它不能与dateselected事件一起工作。也许我也应该提到这个方法与我想显示它的表单在不同的类中。@user2726516好的,用表单引用替换它。