如何仅禁用devexpress的复选框(而不是完整的checkboxlist)?

时间:2011-11-25 12:31:56

标签: c# winforms devexpress

在非编辑模式下,我需要用户能够浏览列表(滚动等),但无法选中复选框。

如果我执行checkedboxlist.enabled = false,则整个列表将被禁用。只有我需要禁用复选框,以便用户不以非编辑模式进行交互(以编辑方式)。

修改 我只是将字符串列表分配给checkedboxlist的数据源。

        this.UserSelectedMsgTypes.DataSource = userSelectedMsgs;
        this.UserAvailableMsgTypes.DataSource = availableMsgTypeList;

目前通过

启用/禁用整个列表
        this.UserSelectedMsgTypes.Enabled = true/false;
        this.UserAvailableMsgTypes.Enabled = true/false;

我之前尝试过@James解决方案,但是没有用。因为不管怎样,即使有物品,'ItemCount'也是0。在数据源中,它显示有6个项目,但在列表中显示为0。

2 个答案:

答案 0 :(得分:0)

试试这个:

    foreach (DevExpress.XtraEditors.Controls.CheckedListBoxItem item in checkedListBoxControl1.Items)
    {
        item.Enabled = false;
    }

答案 1 :(得分:0)

这是一个肮脏的工作,但这怎么样?

private IEnumerable<DevExpress.XtraEditors.Controls.CheckedListBoxItem> GetCheckItems(string[] myStringArray)
{
    foreach(string s in myStringArray)
    {
        DevExpress.XtraEditors.Controls.CheckedListBoxItem item = new DevExpress.XtraEditors.Controls.CheckedListBoxItem();
        item.Description = s;
        yield return item;
    }
}

致电:

checkedListBoxControl1.Items.AddRange(GetCheckItems(new string[] {"test1","test2","test3"}).ToArray());

然后使用foreach循环应用第一个答案(或在GetCheckItems方法中设置ENabled = false)。