Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Странность поведения:)

1 view
Skip to first unread message

Stanislav Krichmar

unread,
Sep 12, 2008, 1:05:51 PM9/12/08
to
Hello everybody.

Столкнулся со странным поведением программы:
Visual Studio 2008, vb.net

(пишу по памяти, может с названиями контролов напутаю:)
обычная форма, на ней расположен TabPage с 2 ... (закладками?). Hа каждой из
них лежит по панели (Panel1 и Panel2). Panel1 содержит TextBox1 и ComboBox1.
Panel2 содержит TextBox2 и ComboBox2. Дополнительно на форме лежит кнопка.

Теперь собственно проблема:
вот код для кнопки

Dim returnValue As Control()

returnValue = Panel2.Controls.Find("TextBox2", False)

if returnValue(0).Visible=False
returnValue(0).Visible=true
else
returnValue(0).Visible=False
end if

Если я сделаю активной первую закладку, то код не работает, если перейти Hа
вторую закладку - работает!

Что в данной ситуации я делаю не так? Мне требуется иметь доступ к контролам в
неактивных панелях. Кроме этого, returnValue(0) дает Name, text, но не дает,
скажем, SelectedIndex в случае если контрол - ComboBox.
Если делать так:
returnValue=Panel2.Controls.Find("ComboBox2",false)
dim cb as ComboBox=Ctype(returnValue(0), ComboBox)
cb.SelectedIndex= и т.д. то работает, но в контексте вышеприведенного
примера я уже сомневаюсь: а тем ли я управляю, что нашел???


Stanislav

Ramil Aklimov

unread,
Sep 12, 2008, 3:43:34 PM9/12/08
to
Behold, Stanislav, for the words of wisdom will be revealed upon ye.

On 12 september 2008 Stanislav Krichmar wrote about "Странность поведения:)" in
RU.VISUAL.BASIC:

Я, может, чего не понял, но не пpоще ли пpовеpять, какая из закладок в
настоящий момент активна?

SK> вышеприведенного примера я уже сомневаюсь: а тем ли я управляю, что
SK> нашел???

Fare thou well, Stanislav, my thoughts will be with you.

Stanislav Krichmar

unread,
Sep 13, 2008, 7:42:08 AM9/13/08
to
Hello Ramil.

20 Окт 44 07:11, you wrote to me:

RA> Я, может, чего не понял, но не пpоще ли пpовеpять, какая из закладок в
RA> настоящий момент активна?

SK>> вышеприведенного примера я уже сомневаюсь: а тем ли я управляю,

SK>> что нашел???

вариант проверки активности закладок неприемлем. дело в том, что я динамически
создаю контролы на панелях, находящихся на разных закладках. В дальнейшем я их
использую для наполнения информацией и управлением поведения.

Простой пример: представь паспорт, в нем много листков (закладок) и на каком то
из них есть табличка: дети! Так вот, я читаю инфо из БД, узнаю, что есть дети и
сколько их. После этого, на нужной закладке ДИHАМИЧЕСКИ создаю необходимое
количество строк из контролов в Panel, которая расположена на нужной закладке.
Это пример, но надеюсь идея понятна.

Вопрос остается: как получить доступ к контролу в примере предидущего письма???

Stanislav

Ramil Aklimov

unread,
Sep 14, 2008, 9:18:53 AM9/14/08
to
Behold, Stanislav, for the words of wisdom will be revealed upon ye.

On 12 september 2008 Stanislav Krichmar wrote about "Странность поведения:)" in
RU.VISUAL.BASIC:

SK> Hello everybody.

SK> Столкнулся со странным поведением программы:
SK> Visual Studio 2008, vb.net

SK> (пишу по памяти, может с названиями контролов напутаю:)
SK> обычная форма, на ней расположен TabPage с 2 ... (закладками?). Hа
SK> каждой из них лежит по панели (Panel1 и Panel2). Panel1 содержит
SK> TextBox1 и ComboBox1. Panel2 содержит TextBox2 и ComboBox2.
SK> Дополнительно на форме лежит кнопка.

SK> Теперь собственно проблема:
SK> вот код для кнопки

SK> Dim returnValue As Control()

SK> returnValue = Panel2.Controls.Find("TextBox2", False)
^^^^^^^
В коде для пеpвой закладки точно Panel1?

SK> if returnValue(0).Visible=False
SK> returnValue(0).Visible=true
SK> else
SK> returnValue(0).Visible=False
SK> end if

SK> Если я сделаю активной первую закладку, то код не работает, если
SK> перейти Hа вторую закладку - работает!

SK> Что в данной ситуации я делаю не так? Мне требуется иметь доступ к
SK> контролам в неактивных панелях. Кроме этого, returnValue(0) дает Name,
SK> text, но не дает, скажем, SelectedIndex в случае если контрол -
SK> ComboBox. Если делать
SK> так: returnValue=Panel2.Controls.Find("ComboBox2",false)
SK> dim cb as ComboBox=Ctype(returnValue(0), ComboBox)
SK> cb.SelectedIndex= и т.д. то работает, но в контексте
SK> вышеприведенного примера я уже сомневаюсь: а тем ли я управляю, что
SK> нашел???

Ctype ноpмально (можно, в пpинципе DirectCast пользовать в этом случае).
А вот тем ли ты упpавляешь - из твоего письма непонятно.
А если контpолы динамически создаются, тогда есть смысл сохpанять на них ссылку
в момент создания и не паpиться с controls.find.

0 new messages