2013-07-05 120 views
1

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

下面的代码显示所选月份,在数字

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

这将在Form1中显示选定的一个月,但我想让它在窗体2显示?

回答

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(); 

窗体2然后可以显示月份名称,如上所示。

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

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(); 
+0

我收到提示:“CultureInfo的”这个名字不会在目前情况下 – deepz

+1

存在在代码的顶部,添加'using System.Globalization;'作为一个快速提示,如果你遇到这个错误,VS可以自动尝试并为你添加'using'语句。在点击错误类(在这种情况下为'CultureInfo')后按'CTRL' +'.',会弹出一个选项框,您可以在其中添加正确的'using'语句。 – keyboardP

+0

您需要将该数据传递给Form2构造函数(您必须将该构造函数自己添加到Form2类中)。所以打开Form2.cs,你会看到'public Form2()'。这是现有的默认ctor。您可以添加一个新的(或者如果您想要强制添加一个对象,请将其替换)。新的代码看起来就像我添加的第二个代码。除了'DateTime'对象外,您可以将其更改为'string'并传入'this.Text'字符串。我将用字符串选项更新代码。 – keyboardP