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

时间:2018-05-24 10:47:15

标签: c# winforms monthcalendar

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

1 个答案:

答案 0 :(得分:0)

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

所以在你的exportform的类里面

ExportForm exportForm = new ExportForm(this);

然后当你实例化它

var fromDate = _statsform.dateFromCalendar.... etc

您可以在按钮点击代码中引用统计信息中的标签

let array = [10, 20, 30, 40],
        len = 8,
        result = Array.from({length: len}).map((v, i) => array[i % array.length]);
    console.log(result);

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