Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Изменить значение у контрола на родительской форме Добавлено: 30.06.06 14:12  

Автор вопроса:  Алексей | Web-сайт: www.ntm.nnov.ru | ICQ: 224329870 
Собственно проблема такая:
Есть mdi-форма (IsMdiContainer=True), отображаю в ней окно:

Dim frmStart as New Form1
frmStart.MdiParent=Me
frmStart.Show()

На mdi-форме есть StatusBar, как мне из формы потомка изменить у StatusBar значение св-ва "Text"???

Ответить

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

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



ICQ: 301424893 

Вопросов: 28
Ответов: 277
 Web-сайт: www.vbkoders.info
 Профиль | | #1
Добавлено: 30.06.06 14:35
MDIParent1.StatusStrip1.text=...
Может так?

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 01.07.06 02:41
На mdi-форме есть StatusBar, как мне из формы потомка изменить у StatusBar значение св-ва "Text"???

Что значит "потомка"? При чем тут вообще наследование?

Если речь идет о форме, открытой в контейнере MDI, то нужно иметь глобальную сыслку на MDI-форму, как это сделать, здесь не раз обсуждалось.

Разумеется, модификатор у контрола к которому ты хочешь получить доступ, должен быть Friend или Public

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 01.07.06 02:46
Сори за второй пост, но...
В .NET 2.0 можно обращаться к свойствам класса формы напрямую, не использую глобальную ссылку.

Допустим, класс нашей MDI формы имеет имя MdiForm.
В этом случае в дочерней форме мы можем доступаться до ее членов через имя класса:

MdiForm.StatusBar1.Value=50

Я точно не знаю как работает данный механизм, судя по всему при компиляции генерируется shared-экземпляр формы к к котому адресуются эти вызовы.

Ответить

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



ICQ: 301424893 

Вопросов: 28
Ответов: 277
 Web-сайт: www.vbkoders.info
 Профиль | | #4
Добавлено: 01.07.06 18:07
Суть та же, что и у меня...

Ответить

Номер ответа: 5
Автор ответа:
 Алексей



ICQ: 224329870 

Вопросов: 4
Ответов: 5
 Web-сайт: www.ntm.nnov.ru
 Профиль | | #5
Добавлено: 03.07.06 08:22
Что значит "потомка"? При чем тут вообще наследование?

сорри, не так выразился, имелась в виду дочерняя форма

собственно пытался делать так:

в дочерней форме:
dim frmParent as New mdiParent 'mdiParent - форма со StatusBar'ом
frmParent.StatusBar1.Panels(1).text="some text" 'на статусбаре есть 2 панели, на одной из них я хочу поменять текст

после выполнения данного кода на панели статусбара ничего не меняется... :(

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 03.07.06 16:11
А ничего и не будет меняться.. поскольку ты создаешь НОВЫЙ (невидимый) экземпляр MDI-формы..
Тут у тебя 2 пути:
Как уже сказали, в VS2005 можешь обращаться на прямую к нужному свойству..
MDIFormName.StatusBar1.Panels(1).text="some text"

где MDIFormName - имя твоей MDI-формы

А в VS2003 сначала необходимо получить ссылку на MDI-форму.. сделать это можно через св-во MdiParent дочерней формы. Через CType приводишь это свойство к типу твоей MDI-формы, и дальше уже работаешь со всем что на ней находится...

Ответить

Номер ответа: 7
Автор ответа:
 Алексей



ICQ: 224329870 

Вопросов: 4
Ответов: 5
 Web-сайт: www.ntm.nnov.ru
 Профиль | | #7
Добавлено: 03.07.06 16:51
Спасибо, помогло.
в дочерней форме:
Dim mdiParent As Form1
mdiParent = CType(Me.MdiParent, Form1)
mdiParent.StatusBar1.Panels(0).Text = "some text"

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #8 Добавлено: 04.07.06 00:42
Вот и славненько.. :-))
Значит одной проблемой у тебя меньше стало.. ))

Ответить

Страница: 1 |

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



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