1

選択した月を数字ではなく単語で表示したい。Form1 と Form2 はどちらも親 MasterForm の子フォームです。Form1 には MonthCalendar と btnCreate というボタンがあります。ユーザーは月を選択してボタンをクリックします。その後、Form2 が表示され、選択した月が Form タイトルに表示されます。

以下のコードは、選択した月を数字で表示します

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

選択した月が Form1 に表示されますが、Form2 に表示したいですか?

4

1 に答える 1

1

e.StartDateTimeオブジェクトであるため、その文字列オーバーライドをフォーマットし、オプションで特定のカルチャを渡すことができます。

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();
于 2013-07-05T07:58:24.787 に答える