2013-07-05 2 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, но я хочу, чтобы отобразить его в Form2?

ответ

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

Я получаю ошибку: Имя «CultureInfo» не существует в текущем контексте – deepz

+1

В верхней части кода добавьте это 'using System.Globalization;' В качестве быстрого совета, если вы получите эту ошибку, VS может автоматически попробовать и добавить для вас эту инструкцию 'using'. Нажмите 'CTRL' +' .' после щелчка по классу с ошибкой (в данном случае - 'CultureInfo'), и появится окно выбора, где вы можете добавить правильную инструкцию' using'. – keyboardP

+0

Вам необходимо передать эти данные в конструктор Form2 (вам придется добавить этот конструктор самостоятельно в свой класс Form2). Итак, откройте Form2.cs, и вы увидите 'public Form2()'. Это существующий по умолчанию ctor. Вы можете добавить новый (или заменить его, если хотите применить добавленный объект). Новый будет похож на второй код, который я добавил. Вместо объекта 'DateTime' вы можете просто изменить это на' string' и передать строку 'this.Text'. Я обновлю код с помощью опции string. – keyboardP