2014-11-07 2 views
0

У меня есть проверочный список, если я проверяю элемент на нем, он покажет отмеченный элемент в списке, но только если этот элемент существует в таблице базы данных. Все работает отлично, за исключением случаев, когда данные не находятся на столе, флажок установлен. вот мой кодVB.Net Снимите отметку с выбранного индекса в списке отметок

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

If e.NewValue = CheckState.Checked Then 
    'Database Query here 

    If data is on table then 
     Listbox1.items.add(CheckedListBox1.SelectedItem.ToString) 
    Else 
     CheckedListBox1.SetItemCheckState(CheckedListBox1.SelectedIndex, CheckState.Unchecked) 
     'Unchecking the checked checkbox because data isn't on the table, i'm having problems here, the checkbox remains checked. 
    end if 

Else 

    Listbox1.items.remove(CheckedListBox1.SelectedItem.ToString) 

End if 

end sub 
+0

Глядя на ваш код, что бы даже не компилировать, если не положить, что„Если данные на столе, то“только для объяснения целей? Я все еще смущен тем, что вы хотите, и где вы застряли? – Codexer

ответ

1

CheckedListBox1_ItemCheck метод обработки события CheckedListBox1.ItemCheck.

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

e.NewValue = CheckState.Unchecked 

Кроме того, вместо ссылки на SelectedItem, вы, вероятно, лучше, чтобы обеспечить вас «повторно получать значения из элемента, который был проверен:

CheckedListBox1.Items(e.Index).ToString() 
Смежные вопросы