我在一个窗体(statsform)上有一个日历控件,我从另一个表单exportform调用该控件:
下面是statsform中的代码,我在其中实例化exportform:
private void export_Click(object sender, EventArgs e)
{
if (formIsHidden == 0)
{
ExportForm exportForm = new ExportForm();
exportForm.Show();
formIsHidden = 1;
}
}
每次单击时,我都会以statsform更新日历控件中的日期:
public void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
dateFromLabel.Text = dateFromCalendar.SelectionStart.ToString("dd/MM/yyyy");
}
public void monthCalendar2_DateChanged(object sender, DateRangeEventArgs e)
{
dateToLabel.Text = dateToCalendar.SelectionStart.ToString("dd/MM/yyyy");
}
下面是来自form2的代码(尝试获取selectionStart属性并使用它)
(On button click)
statsform statsform = new statsform();
string startDate = statsform.dateFromCalendar.SelectionStart.ToString("yyyy-MM-dd 00:00:00");
string endDate = statsform.dateToCalendar.SelectionStart.ToString("yyyy-MM-dd 23:59.00");
(Pass date to SQL Queries)
但是,所选日期未传递给exportform,只有在创建断点并检查字符串时才传递当前日期。
是因为我正在创建表单的一个新实例吗?如何将用户选定的日期从表单传递给第二个表单?
statsform (创建日历) -> exportform (按钮单击event -从statsform日历控件检索selectedDate )
我的解决方案:
public ExportForm(statsform parent)
{
InitializeComponent();
statsform = parent;
}
允许我使用表单的现有实例。我需要构造函数中的(这个),所以非常感谢您的帮助。
发布于 2018-05-24 02:55:51
在实例化exportform的构造函数以传递对第一个表单的引用时,可以在它上设置一个参数,然后直接引用这些属性。
所以在您的exportform类中
private statsform _statsform = null;
public exportform(statsform caller) {
_statsform = caller;
}
然后当你实例化它
ExportForm exportForm = new ExportForm(this);
从您的按钮单击代码,您将引用状态表中的标签。
var fromDate = _statsform.dateFromCalendar.... etc
关于构造函数的更多信息,这里是https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/constructors。
https://stackoverflow.com/questions/50507387
复制相似问题