почему я не могу создать новый экземпляр формы после вызова myForm.close ()? - PullRequest
0 голосов
/ 09 марта 2009

[Изменить]
См. этот пост о том, почему я объявляю элементы формы глобально.

Я решил переписать свой код, чтобы избавиться от глобальных определений.
[Конец редактирования]

Я создаю динамически во время выполнения. форма, все кнопки и поле со списком объявляются глобально для родительской формы.

dim myForm as new form

Я положил на него несколько кнопок и поле со списком, которое заполняю вещами.

Я могу показать форму в порядке с

myForm.show()
myForm.bringToFront()

все отлично работает с первого раза.

когда пользователь заканчивает с, я звоню:

myForm.close()
'have also tried
' myForm.Hide() and myForm.Dispose()

в любом случае (даже при вызове только .close ()) при втором создании формы я получаю следующую ошибку:

Исключение ObjectDisposedException было обработано Невозможно получить доступ к удаленному объекту.

Если я просто переключаю видимость формы, значения в выпадающем списке не стираются каждый раз - и, похоже, очень жаль - просто установить видимость = false.

почему это происходит?

Ответы [ 2 ]

1 голос
/ 09 марта 2009

Поскольку ваша форма закрыта, ее нельзя открыть.

Каждый раз, когда вы хотите открыть новую форму, вам придется переназначать ее новому экземпляру формы. Если вам нужен один и тот же экземпляр, myForm.Show () и myForm.Hide () должны работать, если вы никогда не вызываете myForm.Close ()

0 голосов
/ 09 марта 2009

Полагаю, ваша проблема здесь: «форма, все кнопки и поле со списком объявлены глобально для родительской формы».

Вы определяете форму глобально, поэтому сборщик мусора не очистит ее автоматически, поскольку она всегда находится в области видимости.

Либо вы не утилизируете форму, либо прекратили использовать ее в качестве глобальной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...