Saya menggunakan Timer untuk mengatasi masalah ini. Aktifkan pengatur waktu melalui acara ItemCheck. Ambil tindakan dalam acara Tik Pengatur Waktu.
Ini berfungsi baik item diperiksa melalui klik mouse atau dengan menekan Space-Bar. Kami akan memanfaatkan fakta bahwa item yang baru saja dicentang (atau tidak dicentang) selalu merupakan Item yang Dipilih.
Interval Pengatur Waktu bisa serendah 1. Pada saat event Tick dimunculkan, status baru yang Dicentang akan ditetapkan.
Kode VB.NET ini menunjukkan konsepnya. Ada banyak variasi yang bisa Anda terapkan. Anda mungkin ingin meningkatkan Interval Pengatur Waktu untuk memungkinkan pengguna mengubah status pemeriksaan pada beberapa item sebelum mengambil tindakan. Kemudian di acara Tick, lakukan pengoperan berurutan dari semua Item dalam Daftar atau gunakan koleksi CheckedItems untuk mengambil tindakan yang sesuai.
Itu sebabnya kami pertama-tama menonaktifkan Timer di acara ItemCheck. Nonaktifkan lalu Aktifkan menyebabkan periode Interval dimulai kembali.
Private Sub ckl_ItemCheck(ByVal sender As Object, _
ByVal e As System.Windows.Forms.ItemCheckEventArgs) _
Handles ckl.ItemCheck
tmr.Enabled = False
tmr.Enabled = True
End Sub
Private Sub tmr_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles tmr.Tick
tmr.Enabled = False
Debug.Write(ckl.SelectedIndex)
Debug.Write(": ")
Debug.WriteLine(ckl.GetItemChecked(ckl.SelectedIndex).ToString)
End Sub
if not item = checkedListBox1.Items[e.Index].ToString()