Pertanyaan Kenali item CheckedListBox telah dipilih


Saya belum pernah berurusan dengan checkListBox1 sampai sekarang. Program yang ingin saya buat akan bermanfaat dari menggunakannya daripada harus menggunakan banyak Kotak centang.

Saya memiliki kode:

private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    int selected = checkedListBox1.SelectedIndex;
    this.Text = checkedListBox1.Items[selected].ToString();
}

Masalah dengan ini adalah bahwa setiap kali saya mengklik pada kotak dan menyoroti, kemudian memilih objek yang disorot. Apa yang saya cari adalah mengenali perubahan dalam apa yang telah dipilih, tidak disorot.

Yang juga ingin saya ketahui adalah jika item indeks pertama di CheckListBox dicentang dan yang ke-3, bagaimana saya memeriksa untuk melihat apakah itu benar atau tidak?

Saya yakin saya akhirnya akan mencari tahu tetapi melihat kode akan sangat membantu.

Katakan saya punya 3 kotak:     Kotak A = messageBox.Show ("a");     Box B = messageBox.Show ("b");     Box C = messageBox.Show ("c");

Ini hanya akan menampilkan mbox jika kotak dicentang. Yang ingin saya ketahui adalah bagaimana saya bisa memeriksanya untuk melihat apakah, misalnya, A dan C dicentang sehingga jika saya menekan tombol, kedua kotak pesan akan menampilkan "a" dan kemudian "c"


5
2017-10-25 14:24


asal


Jawaban:


   private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        // a checkbox is changing
        // but value is not updated yet

    }

    private void checkedListBox1_MouseUp(object sender, MouseEventArgs e)
    {
        Debug.WriteLine(checkedListBox1.CheckedItems.Count);
        Debug.WriteLine(checkedListBox1.CheckedItems.Contains(checkedListBox1.Items[0]));
    }

Saya pikir Anda harus memeriksanya di MouseUp untuk apakah tanggal 1 diperiksa. dan _ItemCheck adalah ketika kotak centang berubah, tetapi nilai belum diperbarui.

Lihat referensi: http://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.items.aspx

   // First show the index and check state of all selected items. 
foreach(int indexChecked in checkedListBox1.CheckedIndices) {
    // The indexChecked variable contains the index of the item.
    MessageBox.Show("Index#: " + indexChecked.ToString() + ", is checked. Checked state is:" +
                    checkedListBox1.GetItemCheckState(indexChecked).ToString() + ".");
}

// Next show the object title and check state for each item selected. 
foreach(object itemChecked in checkedListBox1.CheckedItems) {

    // Use the IndexOf method to get the index of an item.
    MessageBox.Show("Item with title: \"" + itemChecked.ToString() + 
                    "\", is checked. Checked state is: " + 
                    checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(itemChecked)).ToString() + ".");
}

6
2017-10-25 14:54



Jika Anda ingin mendapatkan koleksi semua item yang diperiksa, gunakan checkedListBox1.CheckedItems. Untuk menampilkan semua item yang dicentang setelah mengklik tombol, gunakan yang berikut:

private void button1_Click(object sender, EventArgs e)
{
    for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)
        MessageBox.Show(checkedListBox1.CheckedItems[i].ToString());
}

Jika Anda hanya membutuhkan indeks mereka, gunakan checkedListBox1.CheckedIndices sebagai gantinya.


1
2018-01-25 02:01