2014-02-14 4 views
0

Я поставил три элемента в списке и флажках, чтобы выбрать один из них во времени. Код работает, если я проверяю элементы от первого до последнего, но не происходит и не возвращается назад. Я имею в виду, что после выбора последнего элемента, если я снова выберу второе, указанное сообщение неверно. Как это исправить?vb 2010 условные заявления внутри listview

Cheers.

For Each Me.item In lsv_school.Items 
     If Not item.Index = e.Index Then 
      item.Checked = False 
      If e.Index = lsv_school.Items(0).Checked Then 
       lbl_err.Hide() 
       lbl_feed.Text = "Your school tuition will be " + "$" & dipAcc + " per term." 
      ElseIf e.Index = lsv_school.Items(1).Checked Then 
       lbl_err.Hide() 
       lbl_feed.Text = "Your school tuition will be " + "$" & dipBus + " per term." 
      ElseIf e.NewValue = lsv_school.Items(2).Checked Then 
       lbl_err.Hide() 
       lbl_feed.Text = "Your school tuition will be " + "$" & dipMar + " per term." 
      End If 
     End If 
    Next 

End Sub 
+0

Код совершенно не имеет смысла, невозможно догадаться, что он должен делать. По крайней мере, поставьте опцию Strict On в верхней части файла исходного кода, чтобы поймать самые большие ошибки. –

+0

То, что я хочу, чтобы мой код выполнял, - это проверить один элемент во времени в объекте listview, и как только один из трех выбранных вариантов отмечен, отобразится текстовое сообщение выбора. Я знаю, что код грязный, но он действительно работает. Если вы знаете лучший способ, пожалуйста, предложите это мне. –

+0

Если это работает, то почему вы задаете этот вопрос? Вместо этого используйте RadioButtons, они были сделаны для этого. –

ответ

0

Я решил беспорядок самостоятельно, спасибо за ваши предложения, но я должен был использовать эти компоненты и не мог сделать иначе. Я отправлю код, который я использовал.

Первый подкласс - это цикл для проверки по одному флажку.

Private Sub lsv_school_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles lsv_school.ItemCheck 

     'Loop to check one checkbox at time. 
     For Each Me.item In lsv_school.Items 

      If Not item.Index = e.Index Then 
       item.Checked = False 
      End If 

     Next 

    End Sub

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

Private Sub lsv_school_ItemChecked(ByVal sender As Object, ByVal e As ItemCheckedEventArgs) Handles lsv_school.ItemChecked 

    'Conditional statements to select one course at time. 
    If lsv_school.Items(0).Checked = True Then 
     item.Selected = CBool(dipAcc) 
     lbl_err.Hide() 
     lbl_feed.Show() 
     lbl_feed.Text = "Your school tuition will be " + "$" & dipAcc 
    ElseIf lsv_school.Items(1).Checked = True Then 
     item.Selected = CBool(dipBus) 
     lbl_err.Hide() 
     lbl_feed.Show() 
     lbl_feed.Text = "Your school tuition will be " + "$" & dipBus 
    ElseIf lsv_school.Items(2).Checked = True Then 
     item.Selected = CBool(dipMar) 
     lbl_err.Hide() 
     lbl_feed.Show() 
     lbl_feed.Text = "Your school tuition will be " + "$" & dipMar 
    Else 
     If item.Checked = False Then 
      lbl_feed.Text = "" 
      lbl_feed.Hide() 
      lbl_err.Show() 
      lbl_err.Text = "Select a course from the list." 
     End If 
    End If 

End Sub 

Таким образом мне удалось установить флажки в качестве радиообъектов внутри списка.

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