子级到子级表单使用MonthCalendar显示月份

时间:2013-07-05 07:52:47

标签: c# winforms monthcalendar

我想用单词而不是数字显示选定的月份。 Form1和Form2都是父MasterForm的子形式。 Form1有一个MonthCalendar和一个名为btnCreate的按钮。用户将选择一个月并单击按钮。之后,Form2将出现并在表单标题上显示所选月份。

以下代码以数字

显示所选月份
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
    this.Text = "Selected Month: " + e.Start.Month;
}

这将在Form1中显示所选月份,但我想让它以Form2显示?

1 个答案:

答案 0 :(得分:1)

e.Start是一个DateTime对象,因此您可以格式化其字符串覆盖,并可选择传递特定的文化。

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
    this.Text = "Selected Month: " + e.Start.ToString("MMMM", CultureInfo.InvariantCulture));
}

要使它出现在下一个表单上,您可以更新Form2的构造函数。

private DateTime _dt
public Form2(DateTime dt)
{
    _dt = dt;
    this.Text = dt.ToString("MMMM", CultureInfo.InvariantCulture));
}

然后当您打开该表单时,从日历中传入DateTime对象

Form2 f2 = new Form2(dtObjectFromCalendar);
f2.ShowDialog();

然后,Form2可以显示月份名称,如上所示。

根据评论,您可以传递字符串。

public Form2(string textToDisplay)
{

    this.Text = textToDisplay;
}

然后您可以像这样调用该表单(假设您将代码保留在您的问题中)

//this.Text because you set the value of this.Text in your question
Form2 f2 = new Form2(this.Text);
f2.ShowDialog();