-1

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

这就是我想出的:

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);

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

4

2 回答 2

1

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

例如:

Controls.Add(calendar);
于 2013-08-28T18:11:54.820 回答
1

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

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

我认为你应该MonthCalendar在你的Form类中声明一个变量,在你的ShowCalendar而不是局部变量中使用它calendar

于 2013-08-28T18:12:36.873 回答