在表单之间传递selectionStart属性(monthCalendar)(winforms c#)

问题描述 投票:0回答:1

我在一个表单(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),所以感谢所有的帮助。

c# winforms monthcalendar
1个回答
0
投票

当您实例化exportform的构造函数以将引用传递给第一个表单时,可以在exportform的构造函数上设置一个参数,然后直接引用这些属性。

所以在你的exportform的类里面

private statsform _statsform = null;

public exportform(statsform caller) {
    _statsform = caller;
}

然后当你实例化它

ExportForm exportForm = new ExportForm(this);

从按钮单击代码中,您可以引用statsform中的标签

var fromDate = _statsform.dateFromCalendar.... etc

有关构造函数的更多信息,请访问https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/constructors

© www.soinside.com 2019 - 2024. All rights reserved.