Как избавиться от System.ObjectDisposedException при показе формы во второй раз? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть форма с полной картинкой, которая помогает игрокам видеть, куда перемещать их головоломки в игре.Когда я показываю это во второй раз, после того, как я закрыл это, System.ObjectDisposedException бросается.

Я пытался использовать метод Hide (), когда произошло событие FormClosed, но это не помогло.Кроме того, я удалил pictureBox из элемента управления, потому что я думал, что это вызывает это исключение, но это тоже не помогло.

Original_px OrPix = new Original_px();

        private void showFullPictureToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OrPix.Show();
        }

Я хочу, чтобы эта форма работала без этого исключения

1 Ответ

1 голос
/ 13 мая 2019

Если вы закрываете форму, используя верхний правый значок закрытия или через код, вызывающий метод Close () формы, тогда переменная OrPix будет ссылаться на закрытый и расположенный объект. Вы не можете использовать его повторно без повторной инициализации переменной с помощью new Original_px (); .

Вам необходимо знать, когда форма закрыта, и вы можете получить эту информацию, обрабатывая событие FormClosed и установить для этой переменной значение null. Поэтому, когда вам нужно отобразить его снова (или в первый раз), вы должны проверить, является ли переменная нулевым, и повторно инициализировать его

Original_px OrPix = null;

private void showFullPictureToolStripMenuItem_Click(object sender, EventArgs e)
{
    if(OrPix == null)
    {
       OrPix = new Original_px();
       OrPix.FormClosed += PixClosed;
    }
    OrPix.Show();
}

private void PixClosed(object sender, FormClosedEventArgs e)
{
    OrPix = null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...