0

実際に2つの質問があります。ユーザーが矢印をクリックして月を変更すると、指定された月の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();
        }
    }
4

1 に答える 1

2
  1. いいえ、この動作を防ぐことはできません。ユーザーが新しい月に移動するとき、それは日付を変更するのと同じことです。別の動作はあまり意味がありません。新しい月を選択するときは、その月のある日を選択する必要があり、その月の最初の日は他のどの日よりも適切な候補です。実際、DateChangedイベントの説明では、次のように説明されています。

    ユーザーの選択により、または翌月/前月のナビゲーションによって日付の範囲が変更された場合に発生します。

    代わりに、DateSelectedイベントの処理を検討しましたか?これはあなたがやりたいことをすることに近づくだろうと私は思う。その説明はそれを言います:

    ユーザーが日付または日付の範囲を選択したときに発生します。

  2. そして魔法のように、DateSelected代わりにイベントを処理する場合、フォームを閉じることは問題なく機能します。

    public class DatePickerForm : Form
    {
        public DatePickerForm()
        {
            InitializeComponent();
        }
    
        private void calendar_DateSelected(object sender, DateRangeEventArgs e)
        {
            this.Close();
        }
    }
    
于 2011-04-20T10:32:48.317 に答える