在表单之间传递 selectionStart 属性 (monthCalendar) (winforms c#)
Passing the selectionStart property (monthCalendar) between forms (winforms c#)
我在一个表单 (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(按钮单击事件 - 从 statsform 日历控件检索 selectedDate)
我的解决方案:
public ExportForm(statsform parent)
{
InitializeComponent();
statsform = parent;
}
允许我使用表单的现有实例。我需要构造函数中的 (this),所以感谢所有帮助。
您可以在实例化 exportform 的构造函数时设置一个参数,以传递对第一个表单的引用,然后直接引用这些属性。
所以在您的导出表单中 class
private statsform _statsform = null;
public exportform(statsform caller) {
_statsform = caller;
}
然后实例化的时候
ExportForm exportForm = new ExportForm(this);
然后从您的按钮点击代码中引用您统计表中的标签
var fromDate = _statsform.dateFromCalendar.... etc
有关构造函数的更多信息,请点击此处
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/constructors
我在一个表单 (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(按钮单击事件 - 从 statsform 日历控件检索 selectedDate)
我的解决方案:
public ExportForm(statsform parent)
{
InitializeComponent();
statsform = parent;
}
允许我使用表单的现有实例。我需要构造函数中的 (this),所以感谢所有帮助。
您可以在实例化 exportform 的构造函数时设置一个参数,以传递对第一个表单的引用,然后直接引用这些属性。
所以在您的导出表单中 class
private statsform _statsform = null;
public exportform(statsform caller) {
_statsform = caller;
}
然后实例化的时候
ExportForm exportForm = new ExportForm(this);
然后从您的按钮点击代码中引用您统计表中的标签
var fromDate = _statsform.dateFromCalendar.... etc
有关构造函数的更多信息,请点击此处 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/constructors