Автор вопроса: Агент Смит | Web-сайт:www.bbsoftware.ru | ICQ: 147404128
Народ, хелп!
Ситуация: Грузится форма1. В ней есть кнопка. При нажатии на кнопку форма1 становиться невидимой и грузится форма2 через NewFrm = new Form2 : NewFrm.Show.
На форме2 тоже есть кнопка, при нажатии на которую форма2 должна либо стать невидимой, либо отгрузиться. После этого форма1 становиться вновь видимой.
Теперь сама проблема:
Если я делаю форме2 Dispose или Closing, я потом не могу к ней обращаться - вылетает ошибка класс (объект) отгружен. Вариант с Visible и Hide для формы2 тоже не прокатывает - т.к. когда ставишь форме2 visible=true форма отображается, а вот из всех контролов (пикчебоксы, лэйблы и кнопака) видно только кнопку.
Вопрос:
Как отгрузить форму на VB.NET так, чтобы потом её можно было загрузить (и каким образом её грузить?)
Ещё раз акцентирую внимание - проблема не с VB6, а VB.NET
Там такого понятия как Unload и Load нет... там есть Dispose либо Close
Кроме того, тот вариант, как я в первый раз гружу форму2 после её отгружки не прокатывает (Set ObjFrm = new Form2) - пишет, что нельзя обратиться к отгруженному объекту.
Проблема ИМХО возникает из-за того, что в .NET форма = класс, а не объект как в VB6.
Да вижу, что в .NET… Точно, сглючил… Всё в голове перемешалось!
Но у меня такой проблемы не случается. Только что попробовал. После закрытия формы через метод Closeформа отлично открывается.
Кстати, как ты понимаешь отличие класса от объекта? Насколько я знаю, объектом можно назвать экземпляр класса, а класс – это класс. Хотя особой разницы нет… Поэтому акцентировать на этом внимание не стоит. И в VB6 были классы (и форма в VB6 – это класс).
ТЫ ЧЕ!!!!???? С КАКОЙ БАШНИ УПАЛ!? "ОБЪЕКТ - ЧАСТНЫЙ СЛУЧАЙ КЛАССА"... ТЫ ЧЕ!!!!???? ВСЕ РАВНО, ЧТО "ПАКЕТ - ЧАСТНЫЙ СЛУЧАЙ УПАКОВКИ"... КЛАСС - ЭТО СТРУКТУРА, НА ОСНОВЕ КОТОРОЙ СОЗДАЕТСЯ ОБЪЕКТ. КЛАСС - БЕСТЕЛЕСНЫЙ ДУХ. ОБЪЕКТ - СЛЕДСТВИЕ ДУХА, НО НЕ ЧАСТНЫЙ СЛУЧАЙ. ИЗВИНЯЮСЬ ЗА ОТСТУПЛЕНИЕ ОТ ТЕМЫ...
У МЕНЯ ВСЕ РАБОТАЕТ. СОЗДАЛ ТАКОЙ ЖЕ ПРИМЕР. ВСЕ ФУРЫЧИТ. ЭТО У ТЕБЯ ЧЕ-ТО С ВИНДОМ.
У меня всё ok. Вызываю Dispose, потом опять нормально создаётся кодом:
dim f as new frmsend
f.Show
Я немного поэкспериментировал… Такая же ситуация, как у тебя получается только если после освобождения объекта (Dispose) ты не создаёшь новый экземпляр формы, а пытаешься обратиться к тому же самому. А так как он уже уничтожен, поэтому такая ошибка… Если же перед вызовом Showсоздать новую форму (f=newfrmsend), то всё будет нормально.