Как закрыть форму в событии date_changed в MonthCalendar?

На самом деле у меня есть два вопроса. Когда пользователь щелкает стрелки для изменения месяцев, автоматически выбирается 1. текущего месяца. Можно ли предотвратить такое поведение, чтобы date_changed сначала срабатывала, когда пользователь нажимает на фактическую дату?

public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            this.Close();
        }
    }

Я поместил свой MonthCalendar в отдельную форму. При нажатии кнопки открывается эта форма, и пользователь может выбрать дату. В событии date_changed я хочу, чтобы форма закрылась, поэтому я выполнил this.Close (), но это вызывает сбой приложения, и я получаю исключение ObjectDisposedException:

Нет доступа к удаленному объекту. Имя объекта: 'MonthCalendar'

Как мне закрыть форму?

РЕДАКТИРОВАТЬ:

public partial class Form1 : Form
    {

        Form2 frm2;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            frm2 = new Form2();
            frm2.theForm = this;
            frm2.Show();

        }


        public void closeAform()
        {
            frm2.Close();
        }

    }

public partial class Form2 : Form
    {

        public Form1 theForm { get; set; }

        public Form2()
        {
            InitializeComponent();
        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            theForm.closeAform();
        }
    }

person Bildsoe    schedule 20.04.2011    source источник
comment
Это как срезать ветку под ногами. Вы должны вызвать делегата, который обрабатывает this.Close ();   -  person Gabriel    schedule 20.04.2011
comment
Где происходит ваше исключение? Я думаю, что, возможно, вы хотите, чтобы в вашей форме было событие, которое запускается при изменении даты. Обработайте это в основной форме и закройте там календарную форму.   -  person Nick    schedule 20.04.2011
comment
Может ли кто-нибудь из вас привести мне пример, как это делается? Я отредактировал код сообщения, чтобы включить мою собственную попытку, которая не сработала.   -  person Bildsoe    schedule 20.04.2011


Ответы (1)


  1. # P1 #
    # P2 #
    # P3 #
    # P4 #
  2. И, как по волшебству, когда я обрабатываю событие DateSelected, закрытие формы работает нормально:

    public class DatePickerForm : Form
    {
        public DatePickerForm()
        {
            InitializeComponent();
        }
    
        private void calendar_DateSelected(object sender, DateRangeEventArgs e)
        {
            this.Close();
        }
    }
    
person Cody Gray    schedule 20.04.2011