Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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
Dim nn as Form1
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
Dim nn as Form1
nn.ShowDialog()

и вообще нада Dim nn As New Form1

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 23.11.06 01:56
и вообще нада Dim nn As New Form1

вовсе необязательно.. как ни странно, но в 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
Dim nn As Form1

Советую забыть про эту дурость которую непонятно зачем вернули в 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
Безусловно, в VB8 им проще сделать эту элементарную операцию.

Абсолютно согласен.. это проще.. И после этого они точно так же попытаются обратиться к любому другому объекту, не создая экземпляра! А потом в 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 - это переменная, имеющая тип Form1.
Вообще тут еще компилятор вызовы более точно разруливает кто где лежит.

И, написав Dim aaa As Form1, мы (опять-таки с точки зрения классического ООП) не создаем объект.

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

Вроде ж не очень трудно написать New

Угу. А потом хранить черти где глобальную ссылку на эту форму? Зачем все усложнять, я не понимаю просто.

Посмотри на еще одну "нелогичную" вещь.
Оператор бинарной эквиваленции (огромное спасибо sne за то что сказал подсказал, что в VB .NET операторор бинарной эквиваленции - это "=";) компилируется не в вызов функции Equals, а в вызов Helper-функций из Microsoft.VisualBasic. Ужас как нелогично, правда?

Ответить

Страница: 1 |

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



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