您好我试图创建一个函数,它会在给定表单上的givven位置放置日历,并以字符串形式返回所选日期。
这是我到目前为止所得到的:
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;
}
函数调用如下所示:
Point calenderLocatie = new Point(405, 69);
string dateForTextbox = HelpFunction.ShowCalendar(calenderLocatie, this);
txtPeriode_Tot.Text = dateForTextbox;
日历显示在表单上但不返回任何字符串。我已经尝试了一个事件处理程序,但由于静态属性,这不起作用。
提前感谢您的帮助。
答案 0 :(得分:0)
你需要一个处理程序。从方法中删除static关键字。
答案 1 :(得分:0)
你的ShowCalendar
方法不能以这种方式返回字符串,我知道你要显示日历,让用户选择一些日期并在之后隐藏它,将所选日期存储在一个字符串中,这里是应该是什么:
public static void ShowCalendar(Point locatieCalender, Form F1, Control textBox)
{
MonthCalendar calender = new MonthCalendar();
calender.Location = locatieCalender;
calender.Parent = F1;
//Register this event handler to assign the selected date accordingly to your textBox
calendar.DateSelected += (s,e) => {
textBox.Text = e.Start.ToString("dd-MM-yyyy");
(s as MonthCalendar).Parent = null;
(s as MonthCalendar).Dispose();
};
calender.Show();
calender.BringToFront();
}
//Use it
Point calenderLocatie = new Point(405, 69);
HelpFunction.ShowCalendar(calenderLocatie, this, txtPeriode_Tot);