Страница: 1 |
Страница: 1 |
Вопрос: Формы, формы
Добавлено: 21.11.06 19:03
Автор вопроса: Sergey Gaponov | ICQ: 278513301
Что-то я запутался с формами:
для того чтобы открыть форму я делаю так:
Dim nn as Form1
nn.ShowDialog()
затем также из первой формы отрываю вторую и в ней хочу показать таблицу DataGrid с данными, но почему-то при выполнении функции Fill в DataSet ошибка идет на строки отрытия первой формы (говорит что объект не инициализирован), первая форма вызыается из стартовой процедуры. Не могу понять при чем тут первая форма
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 21.11.06 20:02
nn.ShowDialog()
Вы открывате форму в модальном режиме.. А это говорит о том, что пока вы ее не закроете ничего больше открывать нельзя! попробуйте просто вызвать метод Show()
Номер ответа: 2
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #2
Добавлено: 22.11.06 17:09
Юзать нада nn.Show
Номер ответа: 3
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #3
Добавлено: 22.11.06 20:37
nn.ShowDialog()
и вообще нада Dim nn As New Form1
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 23.11.06 01:56
вовсе необязательно.. как ни странно, но в VS 2005 даже Form1.Show() прокатит.. Как бы абсурдно это не выглядело на первый взгляд..
Номер ответа: 5
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 23.11.06 10:41
Ничего абсурдного здесь нет, я уже приводил на форуме логичное объяснение этого, собственно каждый кто может пользвоаться рефактором, сможет разобраться.
Если в двух словах - существуют статичекие переменные с именами форм, и когда используется такой метод работы, то ты работаешь именно с этими статичекими экземплярами (а не со статическими методами класса Form1 как может показаться).
Номер ответа: 6
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #6
Добавлено: 23.11.06 10:42
Советую забыть про эту дурость которую непонятно зачем вернули в VB, полезности в ней ноль, а запутать, особенно новичка можно накрепко!
Номер ответа: 7
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #7
Добавлено: 23.11.06 11:07
Честно говоря меня появление данной фичи поставило в тупик Даже искал у Form1 Shared-члены Show, ForeColor и т.п.
Но потом вобщем предполагал как это реализуется, а рефактор подтвердил мои предположения.
Лично я ЗА эту фичу, так как она упрощает разработку, по крайней мере для меня. Нет, не потому что я не разбираюсь как работают формы и что такое ООП, а потому что юзать ее проще, время на мелочи не тратятся.
Номер ответа: 8
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #8
Добавлено: 23.11.06 22:30
В чем то я с тобой согласен и поддерживаю.. Удобно? Да! Быстро? Да! Но при условии, что ты понимаешь,что ты делаешь и знаешь что такое классы и объекты.. И я сам ее юзаю после того как узнал, что это вообще воозможно. Но слова Viper'a тоже не лишины смысла.. для новичков - это 'смерть'.. и внесение непоняток разного рода..
Номер ответа: 9
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 23.11.06 23:57
Куда больше непоняток вызывает как раз то, как отобразить форму у VB6-программистов, перешедших на VB7, или может ты не помнишь сколько здесь было вопросов, связаных имено с тем что для работы с формой нужно создавать ее экземпляр.
Безусловно, в VB8 им проще сделать эту элементарную операцию.
Номер ответа: 10
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #10
Добавлено: 24.11.06 17:50
Абсолютно согласен.. это проще.. И после этого они точно так же попытаются обратиться к любому другому объекту, не создая экземпляра! А потом в MDI приложении надо будет сделать несколько одинаковых форм.. и опять тупик!
И это понятно.. ведь на 6-ке, как правило, редко прибегают к классам из за убогости ООП и отсутствия полноценного наследования, в основном используют модульный метод построения приложения.. Отсюда и все непонятки на начальном этапе перехода на VB8..
Номер ответа: 11
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #11
Добавлено: 24.11.06 20:46
не знаю, ну пусть это легче и быстрее, но это отход от правил! Лично я очень не люблю, когда можно отойти от к.-либо правил, в т. ч. и в этом случае
Номер ответа: 12
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #12
Добавлено: 24.11.06 21:10
Да никакой не отход, все имеет очень логическое объяснение!
Номер ответа: 13
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #13
Добавлено: 25.11.06 21:30
С точки зрения классического ООП - отход. Что такое Form1? Это класс. Просто какой-то класс. И, написав Dim aaa As Form1, мы (опять-таки с точки зрения классического ООП) не создаем объект. Ну и зачем делать исключение формам? Вроде ж не очень трудно написать New.
Лично мне жаль, что эту "фишку" вернули в VB.NET 2005.
Номер ответа: 14
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #14
Добавлено: 26.11.06 00:13
Ну класс.
Еще Form1 - это переменная, имеющая тип Form1.
Вообще тут еще компилятор вызовы более точно разруливает кто где лежит.
Не создаем, но вобщем-то мне не понятно какое отношение данный пример имеет к рассматриваемому вопросу.
С этим aaa ты ничего не сделаешь пока не проинициализируешь.
Угу. А потом хранить черти где глобальную ссылку на эту форму? Зачем все усложнять, я не понимаю просто.
Посмотри на еще одну "нелогичную" вещь.
Оператор бинарной эквиваленции (огромное спасибо sne за то что сказал подсказал, что в VB .NET операторор бинарной эквиваленции - это "=" компилируется не в вызов функции Equals, а в вызов Helper-функций из Microsoft.VisualBasic. Ужас как нелогично, правда?