Ну вот допустим у вас есть форма, в которой есть поле день рождения, есть кнопка, при нажатие которой открывается другая форма с календарём и двумя кнопками "ОК" и "Отмена", но в случае если поле в основной форме не пустой, т.е. с ведённой датой, то отображаем её в календаре, и при нажатие на кнопку "ОК", возвращается выбранная дата из календаря в поле основной формы. Вот скрин, основная форма, это где поле день рождения, и кнопка "...", она будет называться Form1, а форма с календарём пусть будет называть frmBirthdayCalendar, в конструкторе формы frmBirthdayCalendar будем передавать элемент управления день рождения:
Вот код:
Основная форма Form1.cs:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void btnShowCalendar_Click(object sender, EventArgs e) {
frmBirthdayCalender frm = new frmBirthdayCalender(txtBirthday); // При нажати на кнопку "..." вызываем форму, в конструктор передаём поле txtBirthday
frm.Show(); // Отображаем форму
}
}
}Форма с календарём:
frmBirthdayCalender.cs:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class frmBirthdayCalender : Form {
private TextBox txb;
public frmBirthdayCalender(TextBox txb) {
// Если не пусто, то присваем txb из Form1 в frmBirthdayCalender
if(txb != null)
this.txb = txb;
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e) {
txb.Text = mcBirthday.SelectionRange.Start.Date.ToShortDateString(); // Если нажали на кнопку "OK", то устанавливаем значения дня рождения в основной форме т.е. в Form1
this.Close(); // Закрываем форму
}
private void btnCancel_Click(object sender, EventArgs e) {
this.Close(); // Закрываем форму
}
private void Form2_Load(object sender, EventArgs e) {
if (txb.Text.Length >= 10)
mcBirthday.SetDate(DateTime.Parse(txb.Text));
}
}
}