Работа с формами

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Работа с формами

Сообщение vladimirr » 19.07.2004 (Пн) 11:45

Забавная ситуация…
Процедура вызова окна прекрасно работает с объявленной в самой процедуре переменной (Dim frm As New Form2 frm.Show()), но при вызове переменной как глобальной (в модуле или форме) даёт такой эффект: форма тоже прекрасно открывается, выполняет дела и закрывается, но при повторном вызове высвечивает строку «frm.Show()» с исключением «Cannot access a disposed object named "Form2"». Можно предложить и другие варианты реализации (главное, чтобы из первой формы и открывалась и закрывалась вторая), но хотелось бы разобраться в данной проблеме: ведь должен же код работать.
Может, меня глюкануло, но ответ на столь, казалось бы, ординарный вопрос никак не могу найти...
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 19.07.2004 (Пн) 15:25

всё правильно, объект отпустил ресурсы а ты пытаешься его использовать. ЛИбо вместо Close делай HIde, либо создавай объект заново...
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 20.07.2004 (Вт) 19:00

но как создать объект, если в коде одной процедуры (кнопки) то другая её не видит, если в модуле формы - переменная создаётся 1 раз
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 20.07.2004 (Вт) 19:25

И ещё. Если в код кнопки в форме1 поместить инициализацию формы2, то форма, понятно, открывается сколько пожелаешь, но закрыть-то программно её не представляется возможным (объявление форм2 в процедуре формы1). Но суть в том, что банальным крестиком справа оно-то ЗАКРЫВАЕТСЯ, значит, где-то в глубине кода формы такая возможность прописана. Понятно, что это всё идиотизм, но как-то в Microsoft это написали.
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 21.07.2004 (Ср) 18:23

Сам понял. Сначала надо объявить переменную в модуле формы – Dim frm as form2 (при этом она ещё не инициализирована). Потом в обработчике события инициализировать её (frm = new form2). Только затем здесь же открывать её. При закрытии из кода другой формы эту переменную видно без проблем. При закрытии закрывается форма, но класс, от которого эта форма наследована, остаётся в памяти. Потом надо только инициализировать новый экземпляр этого класса. Может кому понадобится.
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList