5

今までcheckedListBox1を扱ったことはありません。私が作成したいプログラムは、多数のチェックボックスを使用するよりも、それを使用することでメリットが得られます。

私はコードを持っています:

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

これの問題は、ボックスをクリックして強調表示するたびに、強調表示されたオブジェクトが選択されることです。私が探しているのは、強調表示されたものではなく、選択されたものの変化を認識することです。

私が知りたいのは、CheckListBox の最初のインデックス項目と 3 番目の項目がチェックされている場合、それが真かどうかを確認するにはどうすればよいかということです。

最終的には理解できると確信していますが、コードを見ると非常に役立ちます。

3 つのボックスがあるとします。 Box A = messageBox.Show("a"); ボックス B = messageBox.Show("b"); ボックス C = messageBox.Show("c");

ボックスがチェックされている場合のみ、mbox が表示されます。私が知りたいのは、たとえば、ボタンを押すと2つのメッセージボックスに「a」と「c」のいずれかが表示されるように、AとCがチェックされているかどうかを確認する方法です。

4

2 に答える 2

7
   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]));
    }

1stがチェックされているかどうかは、MouseUpで確認するとよいと思います。_ItemCheck は、チェックボックスが変更されているが、値がまだ更新されていない場合用です。

参照を参照してください: 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() + ".");
}
于 2012-10-25T14:54:11.727 に答える
1

チェックされたすべての項目のコレクションを取得する場合は、checkedListBox1.CheckedItems を使用します。ボタンをクリックしたときにチェックされたすべての項目を表示するには、次を使用します。

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

インデックスのみが必要な場合は、代わりにcheckedListBox1.CheckedIndicesを使用してください。

于 2015-01-25T02:01:52.947 に答える