Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: .NET: обращение к элементам другой формы Добавлено: 18.02.04 10:10  

Автор вопроса:  Svetlana | ICQ: 262385618 

Public form2 As New frmPar()

Form2.Show()

Так открывается вторая форма проекта из главной формы. Хочу обратиться из второй формы к главной и в зависимости от выбора пользователя делать элементы главной формы видимыми или наоборот.

 Private Sub NumericUpDown1_...

Dim frmMain As New Form1() ' как только добавляю эту строку - проект вообще не хочет грузиться!!! как-будто я его и не запускала.

frmMain.TextBox1.Visible = False

End Sub

Как же управлять элементами главной формы???? Наверно я что-то не то делаю..

 

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 VladDor



Вопросов: 17
Ответов: 47
 Профиль | | #1 Добавлено: 18.02.04 10:19

Не нужно новый экземпляр Form1 создавать, тык как не знает какой стартовый оригинал

или копия.

Ответить

Номер ответа: 2
Автор ответа:
 Svetlana



ICQ: 262385618 

Вопросов: 43
Ответов: 205
 Профиль | | #2 Добавлено: 18.02.04 10:33

Я так и подумала - он в Load первой(главной) формы не заходит.  Тык по другому я не могу к элементам управления нужной формы обращаться.. объявление Dim frmMain As Form1() ничего не дает.

 

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 18.02.04 10:35
Тут нужно понять саму идеолгоию ООП...
В общем, этот вопрос на разных форумах встречается нередко... Вот
несколько возможных вариантов решения:

1. Передавать ссылку на главную форму в конструкторе. Тогда нужно
объявить в подчинённой форме приватную переменную:

Private MainForm As Form

, а конструктор подчинённой формы изменить таким образом:

Public Sub New(ByVal MainForm As Form)
Me.MainForm = MainForm
MyBase.New()
InitializeComponent()
End Sub

Создаём подчинённую форму вот так:

Dim f As New Form2 (Me)
f.Show

А из подчинённой формы к родительской так обращаемся:

MainForm. ...


2. Способ похож на первый... В подчинённой форме объявляем публичную (!)
переменную:

Public MainForm As Form

Подчинённую форму создаём так:

Dim f As New Form2
f.MainForm = Me
f.Show

Обращаемся из подчинённой формы к родительской так же, как и в пункте 1.


3. Используем Shared члены... В родительской (!) форме объявляем:

Public Shared MainForm As Form

В родительской форме перед созданием подчинённой формы (а лучще
где-нть при загрузке формы) пишем:

Form1.MainForm = Me

Из подчинённой формы обращаемся к родительской так:

Form1.MainForm. ...

Ответить

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



ICQ: 262385618 

Вопросов: 43
Ответов: 205
 Профиль | | #4 Добавлено: 18.02.04 11:45

Паш, спавибо тебе. Я 3-ий способ взяла. Все работает.

Только объясни мне как такое может быть:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Form1.MainForm.TextBox6.Visible = False  ' работает

End Sub

А если так :

Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged

Form1.MainForm.TextBox6.Visible = False ' НЕ РАБОТЕТ!! см. Ошибку ниже

End Sub

Additional information: Object reference not set to an instance of an object.

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 18.02.04 11:54
То ли MainForm, то ли TextBox6 на момент выполнения этой строчки имеют
значение Nothing. Проверь в Debugger'е...

Ответить

Номер ответа: 6
Автор ответа:
 Mikhael



ICQ: 138809268 

Вопросов: 15
Ответов: 14
 Профиль | | #6 Добавлено: 18.02.04 12:20

У меня вопрос по теме:

Я добавляю новую форму. А в другой форме делаю вызов Form2.Show() но происходит ошибка. Как нужно правильно обьявить?

Ответить

Номер ответа: 7
Автор ответа:
 Svetlana



ICQ: 262385618 

Вопросов: 43
Ответов: 205
 Профиль | | #7 Добавлено: 18.02.04 13:45

Как раз тебе и надо то, что Пашка вложил в пунктах.

 

Я всегда вот так делала:

 Public form2 As New frmPar()

Form2.Show()

 

Ответить

Страница: 1 |

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



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