【问题标题】:uncheckable items in CheckedListBox?CheckedListBox 中不可检查的项目?
【发布时间】:2008-12-30 22:03:23
【问题描述】:

在.NET 框架中,是否可以将CheckedListBox 中的某些项目设置为“不可检查”?我不想让用户再次检查相同的项目并将它们添加到另一个现有列表中。

我希望我很清楚。 提前致谢。

【问题讨论】:

    标签: c# list checkedlistbox


    【解决方案1】:

    我会在代码中将这些项目设置为“Indeterminate”,然后在用户尝试选中/取消选中它们时覆盖 ItemCheck 事件中的“NewValue”属性:

    public Form1()
    {
        InitializeComponent();
        checkedListBox1.Items.Add("Can't check me", CheckState.Indeterminate);
    }
    
    private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if (e.CurrentValue == CheckState.Indeterminate)
        {
            e.NewValue = CheckState.Indeterminate;
        }
    }
    

    CheckedListBox 中的“Can't check me”项无法修改,因为每次用户尝试选中/取消选中它时,事件处理程序都会将其改回。你甚至看不到 UI 相应的更新。

    【讨论】:

      【解决方案2】:

      Matt 的代码不错。

      然而,为什么在checkedlistbox中有一个项目而不让它被选中?
      我的意思是为什么要在列表中包含该项目。

      【讨论】:

      • 其实我的想法是这样的:我们有两个列表。用户可以从列表一到列表二中选择和添加事物。但是,我不想让用户再次将相同的项目添加到第二个列表中。换句话说,列表 2 应该由列表 1 的 uniq 元素组成。
      • 即使你想不出为什么要在 CheckedListBox 中添加一个不可检查的项目的原因,你能不能想象在某个地方、某个时候,有人有充分的理由这样做?有些人喜欢顺从。有些人喜欢跳出框框思考。每次有人说“你为什么要那样做?”我总能想到他们可能的原因。
      猜你喜欢
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多