А как...

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

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

nio
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 07.12.2005 (Ср) 12:18

А как...

Сообщение nio » 07.12.2005 (Ср) 12:29

Понимаю, что вопрос глупейший, но...

1. Создаю новый проект Windows Application
2. В проекте создаю ещё одну форму. Итак, теперь их две: Form1 и Form2
3. На Form1 создаю кнопочку, в ней надо написать код, показывающий Form2... КАК?!!!
На нормальном VB это будет банальное
Код: Выделить всё
Form2.show
А тут? Пока извращаюсь вот так:
Код: Выделить всё
Dim i As Form2
   i = New Form2
   i.show

Это нормально? Или есть более разумный способ? Ведь тогда придётся все конструкции вида Form2.textbox2.text = "W" переделывать в i.textbox2.text = "W", а проект большой, да и с Private/Public этой i будут, наверное, проблемы...

Продолжение вопроса:
Код: Выделить всё
frmMain.DefInstance.Show()

Участок кода, отвечающий за .DefInstance, прорабатывается нормально, но форма показывается лишь на миг и приложение закрывается... В чём может быть дело?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.12.2005 (Ср) 17:17

Хоть бы поискал для приличия...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

nio
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 07.12.2005 (Ср) 12:18

Сообщение nio » 07.12.2005 (Ср) 18:03

А просто ответить слабо? Вместо того, чтобы посылать... Искал я, не нашёл ничего, кроме нескольких аналогичных вопросов... Как ни делаю, форма открывается и тут же исчезает...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 07.12.2005 (Ср) 18:44

На "нормальном" VB если писать "нормально" будет тоже самое (не считая некоторых нюансов синтаксиса)

Код: Выделить всё
Dim F as New Form2
F.Show()
Весь мир матрица, а мы в нем потоки байтов!

nio
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 07.12.2005 (Ср) 12:18

Сообщение nio » 07.12.2005 (Ср) 18:51

!Viper!, так и делаю... А всё равно, появляется и программа завершается...
Код: Выделить всё
Public Sub Main()
Dim fLogin As New frmLogin
While Not fLogin.OK
      fLogin.ShowDialog()
End While
fLogin.Close()
Dim fmMain As New frmMain
fmMain.Show()
End Sub

А на VB6 подобное работает нормально. VS2003, так что опции "Закрывать приложение, когда закрыта последняя форма" в свойствах проекта нет. :(
Update
Ура! Вместо fmMain.Show() написал Application.Run(fmMain) и всё стало работать. Всем спасбо, вопрос снимается... ^_^

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 07.12.2005 (Ср) 22:00

nio

Привет.
Я не волшебник, а только учусь. Вот делал в школе такое упражнение:
первая форма ввод пароля для входа в программу, вторая форма обозначает программу, а третья выводит сообщение что все попытки (их дается только три) ввести правильный пароль не увенчались успехом и все закрывается.
Посмотри может что интересное найдешь.

Всем удачи.

ЗЫ извини все на фламандском, но я коменты по русски вставил в код. Ну а код есть код.
Вложения
Wachtwoord.zip
Пример с тремя формами для ввода пароля при входе в программу.
(39.95 Кб) Скачиваний: 37

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

Сообщение Sebas » 07.12.2005 (Ср) 23:08

nio писал(а):А просто ответить слабо? Вместо того, чтобы посылать... Искал я, не нашёл ничего, кроме нескольких аналогичных вопросов... Как ни делаю, форма открывается и тут же исчезает...


Я бы не был так категоричен в выражениях, хотя бы посмотрев на количество постов собеседника.(((((
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

nio
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 07.12.2005 (Ср) 12:18

Сообщение nio » 08.12.2005 (Чт) 0:21

Если судить по этому топику, то количество постов обратно пропорционально желанию помочь: сравните пост GSerg с постами Viper'а и Sebas'а... Впрочем неважно :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.12.2005 (Чт) 17:16

nio писал(а):Если судить по этому топику

А я сужу не по топику, а по форуму.
Я помню темы, поднимавшиеся на форуме за последние несколько лет, и я помню, сколько раз поднималась эта.
Если бы ты поискал, ты бы нашёл. Прямо в этом разделе. По ключевым словам "Form1" и "Form2" (попробуй, попробуй прямо сейчас. Искать в: Visual Basic .NET, Искать все слова).


ЗЫ. В случае возникновения дальнейших недопониманий по поводу моей реакции, см. http://www.sysadmins.ru/rtfm/ask_howto.htm
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

nio
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 07.12.2005 (Ср) 12:18

Сообщение nio » 09.12.2005 (Пт) 16:16

спросите себя: "Как надо изменить соответствующую документацию или список ЧаВО, чтобы больше этот вопрос никто не задавал?"
:)

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 15.12.2006 (Пт) 21:08

Искал-искал... Ничего нужного не нашел. Вобщем ситуация такая же, только нужно как-то обойтись без New.

Это нужно, например, в том случае, если имеются две формы, на одной из которых вводятся некоторые данные. Потом ей делается .Hide. А из другой формы нужно сделать .Show так, чтобы эти данные остались на форме. А с New такое не проходит - создается просто новый экземпляр формы...

На VB6 это прокатывает, а вот на VB.NET... :(
Подпись находится в стадии разработки...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 16.12.2006 (Сб) 7:27

и причем тут New собственно?
Весь мир матрица, а мы в нем потоки байтов!

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 16.12.2006 (Сб) 12:28

Dim _Form As New Form1
Нужно как-то обойтись без нового экземпляра и показать старый. Наверное, я туплю.
Подпись находится в стадии разработки...

Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

Сообщение Maitris » 16.12.2006 (Сб) 12:59

Конь писал(а):Это нужно, например, в том случае, если имеются две формы, на одной из которых вводятся некоторые данные. Потом ей делается .Hide. А из другой формы нужно сделать .Show так, чтобы эти данные остались на форме. А с New такое не проходит - создается просто новый экземпляр формы...

Так указатель на форму создай
В модуле пишешь Public MyForm as Form1..
Затем в Form.Load той формы MyForm = Me.
И будешь из любого класса/формы иметь к ней доступ (MyForm.something)
----

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 17.12.2006 (Вс) 13:41

Огромное спасибо!
Подпись находится в стадии разработки...


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

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

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

    TopList