Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Проблема с формами в VB.NET Добавлено: 15.06.03 13:02  

Автор вопроса:  Агент Смит | 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 так, чтобы потом её можно было загрузить (и каким образом её грузить?)

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 15.06.03 13:09

Выгрузить - Unload Me. Загрузить - так же, как до этого загружал...

Вообще, описанное тобой поведение метода HIDE очень непонятно... По идее он должен прятать форму.

Ответить

Номер ответа: 2
Автор ответа:
 Агент Смит



ICQ: 147404128 

Вопросов: 12
Ответов: 128
 Web-сайт: www.bbsoftware.ru
 Профиль | | #2
Добавлено: 15.06.03 14:53

Ещё раз акцентирую внимание - проблема не с VB6, а VB.NET

Там такого понятия как Unload и Load  нет... там есть Dispose либо Close

Кроме того, тот вариант, как я в первый раз гружу форму2 после её отгружки не прокатывает (Set ObjFrm = new Form2) - пишет, что нельзя обратиться к отгруженному объекту.

Проблема ИМХО возникает из-за того, что в .NET форма = класс, а не объект как в VB6.

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 15.06.03 15:40

Да вижу, что в .NET… Точно, сглючил… Всё в голове перемешалось!

Но у меня такой проблемы не случается. Только что попробовал. После закрытия формы через метод Close форма отлично открывается.

Кстати, как ты понимаешь отличие класса от объекта? Насколько я знаю, объектом можно назвать экземпляр класса, а класс – это класс. Хотя особой разницы нет… Поэтому акцентировать на этом внимание не стоит. И в VB6 были классы (и форма в VB6 – это класс).

Ответить

Номер ответа: 4
Автор ответа:
 Агент Смит



ICQ: 147404128 

Вопросов: 12
Ответов: 128
 Web-сайт: www.bbsoftware.ru
 Профиль | | #4
Добавлено: 15.06.03 17:09

Хорошо,  ну вот отгрузил ты форму form2.close (или через form2.dispose), а грузишь ты её потом как? Какими командами? Явно не через MyObj = new Form2

Отличия класса от объекта минимальны, так как объект является частным случаем класса.

 

Ответить

Номер ответа: 5
Автор ответа:
 ШевТ



ICQ: 165728420 

Вопросов: 1
Ответов: 96
 Профиль | | #5 Добавлено: 16.06.03 13:55

ТЫ ЧЕ!!!!???? С КАКОЙ БАШНИ УПАЛ!? "ОБЪЕКТ - ЧАСТНЫЙ СЛУЧАЙ КЛАССА"... ТЫ ЧЕ!!!!???? ВСЕ РАВНО, ЧТО "ПАКЕТ - ЧАСТНЫЙ СЛУЧАЙ УПАКОВКИ"... КЛАСС - ЭТО СТРУКТУРА, НА ОСНОВЕ КОТОРОЙ СОЗДАЕТСЯ ОБЪЕКТ. КЛАСС - БЕСТЕЛЕСНЫЙ ДУХ. ОБЪЕКТ - СЛЕДСТВИЕ ДУХА, НО НЕ ЧАСТНЫЙ СЛУЧАЙ. ИЗВИНЯЮСЬ ЗА ОТСТУПЛЕНИЕ ОТ ТЕМЫ...

У МЕНЯ ВСЕ РАБОТАЕТ. СОЗДАЛ ТАКОЙ ЖЕ ПРИМЕР. ВСЕ ФУРЫЧИТ. ЭТО У ТЕБЯ ЧЕ-ТО С ВИНДОМ.

Ответить

Номер ответа: 6
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #6
Добавлено: 16.06.03 14:27

У меня всё ok. Вызываю Dispose, потом опять нормально создаётся кодом:

 

dim f as new frmsend

f.Show

 

Я немного поэкспериментировал… Такая же ситуация, как у тебя получается только если после освобождения объекта (Dispose) ты не создаёшь новый экземпляр формы, а пытаешься обратиться к тому же самому. А так как он уже уничтожен, поэтому такая ошибка… Если же перед вызовом Show создать новую форму (f=new frmsend), то всё будет нормально.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам