2016-05-15 5 views
0

У меня есть много комбинированных ящиков, в которых я хочу добавить все выбранные значения и отобразить их на ярлыке. Я также создал обработчик событий, который контролирует, было ли выбрано поле со списком, в котором будет изменяться метка постоянно, если обнаружен выбор. Как мне добавить все значения на основе обработчика событий?Добавить все выделенные значения ComboBox

Dim cbCtrl = Panel1.Controls.OfType(Of ComboBox)() 
    For Each ctrl In cbCtrl 
     AddHandler ctrl.SelectedIndexChanged, AddressOf ctrlSelectedIndexChanged 
    Next 

Private Sub ctrlSelectedIndexChanged(sender As Object, e As EventArgs) 
    'MsgBox(CType(sender, ComboBox).Text) 
    For Each ctrl In Panel1.Controls 
     If (ctrl.GetType() Is GetType(ComboBox)) Then 
      For i = 0 To 'LastComboBox ??? 
       i = i + ctrl.SelectedItem 
       label.Text = i 
      Next 
     End If 
    Next 
End Sub 

ответ

1

Взгляды него вы уже используете «для-каждый», чтобы получить весь Controles поля со списком, так что вы могли;

Private Sub ctrlSelectedIndexChanged(sender As Object, e As EventArgs) 
    dim total as integer = 0 
    For Each ctrl In Panel1.Controls 
    If (ctrl.GetType() Is GetType(ComboBox)) Then 
     total += CInt(ctrl.SelectedItem) 
    End If 
    Next 
    label.text = total.tostring 
End Sub 

Но если вы работаете с цифрами, почему бы вам не использовать nummericupdown?

+0

Благодарим за это. Я переусердствовал или думал вообще. Однако при попытке изменить ваш новый код я получаю сообщение об ошибке при использовании функции TryCast. Ошибка в основном говорит: «integer» имеет тип значения, когда он должен быть ссылочного типа. Код перед редактированием работал нормально. Если вы можете отредактировать его, я могу отметить как ответ. – NuWin

+0

это должно работать ... – Lectere

+1

Это еще лучше/короче; Для каждого ctrl Как ComboBox В Panel1.Controls.OfType (Of ComboBox) – Lectere

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