Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

How to: Respond to Checking Items in CheckedListBoxControl

  • 4 minutes to read
In This Article

The following example displays a message box after an item’s check state changes. The example prevents users from toggling the check state of the item with the specified name/description (“Item 0”).

#Bound Mode

using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using System.ComponentModel;

namespace DXApplication {
    public partial class Form1 : XtraForm {
        BindingList<DataItem> items;
        public Form1() {
            InitializeComponent();
            items = new BindingList<DataItem>() {
                new DataItem(){ Name = "Item 0", Value = 0 },
                new DataItem(){ Name = "Item 1", Value = 1, Checked = true },
                new DataItem(){ Name = "Item 2", Value = 2 }
            };
            checkedListBoxControl1.DataSource = items;
            checkedListBoxControl1.DisplayMember = "Name";
            checkedListBoxControl1.ValueMember = "Value";
            checkedListBoxControl1.CheckMember = "Checked";
            checkedListBoxControl1.ItemChecking += CheckedListBoxControl1_ItemChecking;
            checkedListBoxControl1.ItemCheck += CheckedListBoxControl1_ItemCheck;
        }
        void CheckedListBoxControl1_ItemChecking(object sender, ItemCheckingEventArgs e) {
            CheckedListBoxControl list = (CheckedListBoxControl)sender;
            DataItem item = (DataItem)list.GetItem(e.Index);
            e.Cancel = item.Name == "Item 0";
        }
        //Display a message box after an item's check state changes.
        void CheckedListBoxControl1_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e) {
            CheckedListBoxControl checkedListBox = (CheckedListBoxControl)sender;
            DataItem item = (DataItem)checkedListBox.GetItem(e.Index);
            XtraMessageBox.Show($"The check state of '{item.Name}' was changed. New state: {e.State}", "Information");
        }
    }
    public class DataItem {
        public string Name { get; set; }
        public int Value { get; set; }
        public bool Checked { get; set; }
    }
}

#Unbound Mode

using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using System.Windows.Forms;

namespace DXApplication {
    public partial class Form1 : XtraForm {
        public Form1() {
            InitializeComponent();
            checkedListBoxControl1.Items.AddRange(new CheckedListBoxItem[]{
                new CheckedListBoxItem(0, "Item 0"),
                new CheckedListBoxItem(1, "Item 1", CheckState.Checked),
                new CheckedListBoxItem(2, "Item 2"),
            });
            checkedListBoxControl1.ItemChecking += CheckedListBoxControl1_ItemChecking;
            checkedListBoxControl1.ItemCheck += CheckedListBoxControl1_ItemCheck;
        }
        void CheckedListBoxControl1_ItemChecking(object sender, ItemCheckingEventArgs e) {
            CheckedListBoxControl list = (CheckedListBoxControl)sender;
            CheckedListBoxItem item = (CheckedListBoxItem)list.GetItem(e.Index);
            e.Cancel = item.Description == "Item 0";
        }
        //Display a message box after an item's check state changes.
        void CheckedListBoxControl1_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e) {
            CheckedListBoxControl checkedListBox = (CheckedListBoxControl)sender;
            CheckedListBoxItem item = (CheckedListBoxItem)checkedListBox.GetItem(e.Index);
            XtraMessageBox.Show($"The check state of '{item.Description}' was changed. New state: {e.State}", "Information");
        }
    }
}