2012-06-20 3 views
0
for i = 0 to 10 
    dim paneln as new panel 
    paneln.backcolor = color.red 
    if i = 5 then 
     paneln.backcolor = color.white 
    end if 
    me.controls.add(paneln) 
next 

Теперь я хочу, чтобы цвет каждой панели на моей формеVb.net получить панели цвета

красной
красного
красного
красного
белого
красного
красного
красный
красный
красный

Что-то вроде:

For Each p As Panel In Me.Controls 
    MsgBox(p.BackColor) 
Next 

ответ

0

Try:

For Each p As Panel In Me.Controls.OfType(Of Panel)() 
    MessageBox.Show(p.BackColor.ToString()) 
Next 
+0

работы, tnx. :-) – AoTw

1

Если вы используете .NET 3.5 или 4.0, вы можете попробовать:

For Each p as Panel In Me.Controls.OfType(Of Panel) 
    MessageBox.Show(p.BackColor) 
Next 

Это будет перебирать только на панели управления (или управления, которые вытекают из Панель) и игнорировать остальные. Обратите внимание, что это получает только панели, которые находятся непосредственно на форме, а не какие-либо панели, которые находятся внутри объектов контейнера, как и другие панели.

+0

+1 для использования метода расширения OfType. – N0Alias

+0

MsgBox (p.BackColor) Я думаю, что BackColor.tostring исправьте exeption :), но tnx – AoTw

+1

Я изменил VB6-стиль 'MsgBox' в .Net-стиле' MessageBox.Show', который должен неявно вызвать ToString метод на p.BackColor. И сегодня я узнал, что MsgBox принимает объект как свой параметр, а не строку. – MCattle

Смежные вопросы