Ну вот допустим у вас есть форма, в которой есть поле день рождения, есть кнопка, при нажатие которой открывается другая форма с календарём и двумя кнопками "ОК" и "Отмена", но в случае если поле в основной форме не пустой, т.е. с ведённой датой, то отображаем её в календаре, и при нажатие на кнопку "ОК", возвращается выбранная дата из календаря в поле основной формы. Вот скрин, основная форма, это где поле день рождения, и кнопка "...", она будет называться 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)); } } }