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

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

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

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

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

Сообщение areh » 07.04.2004 (Ср) 13:46

Сидел я тут писал программу, и пришел мне в голову такой способ решения проблеммы (на мой взгляд) работы с формами (чтобы приблизить к работе в ВБ 6):

В модуле объявляються глобальные переменные, для каждой формы, и также создаеться Enum, в котором с 1 по n элементы сопоставлены с соответствующими формами:

Код: Выделить всё
Public frm_Login As cls_Login
Public frm_Admin As cls_admin
Public frm_Editor As cls_Editor
Public frm_Splash As cls_Splash
Public frm_User As cls_User

Public Enum NeedsForm As Byte
  No = 0
  Splash = 1
  Login = 2
  Admin = 3
  Editor = 4
  User = 5
End Enum

' Переменная, по которой определяеться, какая форма нужна
Public NextForm As NeedsForm



Далее в процедуре Main, послеинициализации нужных данных, и др., когда понадобиться отобразить первую форму написать примерно слудующее:

Код: Выделить всё
NextForm = NeedsForm.Splash

Do While NextForm <> NeedsForm.No

  NextForm = NeedsForm.No

  Select Case NextForm
    Case NeedsForm.Admin
       frm_Admin = New cls_admin()
       frm_Admin.ShowDialog()
       frm_Admin = Nothing

    Case NeedsForm.Editor
       frm_Editor = New cls_Editor()
       frm_Editor.ShowDialog()
       frm_Editor = Nothing

    Case NeedsForm.Login
       frm_Login = New cls_Login()
       frm_Login.ShowDialog()
       frm_Login = Nothing

    Case NeedsForm.Splash
       frm_Splash = New cls_Splash()
       frm_Splash.ShowDialog()
       frm_Splash = Nothing

    Case NeedsForm.User
       frm_User = New cls_User()
       frm_User.ShowDialog()
       frm_User = Nothing

  End Select
Loop



Ну а в самих формах писать (там где необходимо перейти на другую форму)
Код: Выделить всё
NextForm = NeedsForm.Login
Me.Close()


т.е. в переменную NextForm записывать значение, которое соответствует нужной форме...


Вот такая вот ко мне идея пришла... я вот решил её на ваш суд выложить, узнать, может я чего-то не учел? может будут возникать какие-то проблеммы? Ну и вообще, может просто какие-нибудь рекомендации будут по этой проблеме? может есть способ проще и лучше?

Грандж
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 150
Зарегистрирован: 29.10.2002 (Вт) 14:10
Откуда: Москва

Сообщение Грандж » 08.04.2004 (Чт) 12:30

я честно говоря особо смысла не вижу. хотя, может быть с такой нуждой не сталкивался.. я и модули не особо то юзаю

возможно, будет полезно для тех, кто только переходит на .net

кстати, я бы поюзал ArrayList, вместо Enum.
и между ног затеплилась надежда
(%

http://grunger.net.ru

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 08.04.2004 (Чт) 15:25

Дело в том, что когда в программе много форм, и переход может быть не всгда последователен, то возникают некоторые проблеммы...

вот мне такой способ в голову пришол, я и решил его обсудить...


а насчет ArrayList я чего-то не понял...

Warlock
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 27.01.2004 (Вт) 17:24

Сообщение Warlock » 19.06.2004 (Сб) 12:18

Areh
у меня проблема с открытием и закрытием формы я только учусь программировать на .Net
и не могу понять откуда у тебя берется тип cls_Login желательно по подробнее очень надо

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 19.06.2004 (Сб) 12:48

На самом деле всё очень просто:

когда ты добавляешь в свой проект новые формы, они по умолчанию называються Form1, Form2, ... ну я их в своем проекте просто переименовал так, как считал удобным для восприятия. Вот таким образом у меня и получились те самые cls_User, cls_Login, cls_admin, cls_Editor, cls_Splash

На самом деле формы представляют собой классы. В коде ты не можешь (ну это так, в общем случае) использовать классы, тебе необходимо работать с экземплярами этого класса, именно так появились frm_Login, frm_Admin, frm_Editor, frm_Splash, frm_User

если чего не понятно, спрашивай ещё...

Warlock
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 27.01.2004 (Вт) 17:24

Сообщение Warlock » 19.06.2004 (Сб) 13:26

что то я делаю как у тебя одна форма закрывается а другая форма открываться даже не думает может я чтото не доконца понял но расскажи длячего нужны эти цифры

No = 0
frm_Splash = 1
frm_Login = 2
frm_Admin = 3
frm_Editor = 4
frm_User = 5
и как они должны работать потомучто когда я вввожу строку

NextForm = NeedsForm.Login

он его сопоставляет с цифрой и дальше не чево не происходжит

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 21.06.2004 (Пн) 9:49

Итак, вообще этот Enum - это просто условное представление (более удобное) числовой переменной, в зависимости от значения которой выводиться та или иная форма.

Возможно, что у тебя не работает, потомучто ты не сделал стартовой процедуру Main, которая должна содержаться в отдельном модуле.

вообщем вот пример проекта с 4-мя формами, посмотри, там всё работает...
Вложения
WinAppSample.zip
Пример по работе с несколькими формами...
(14.71 Кб) Скачиваний: 94

Warlock
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 27.01.2004 (Вт) 17:24

Сообщение Warlock » 21.06.2004 (Пн) 10:13

Большое спасибо за пример вообще идея гениальняя

у меня много проблем ушло


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

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

Сейчас этот форум просматривают: Google-бот и гости: 63

    TopList  
cron