因为CheckBox是有三个状态。还有一个状态是不确定选中或不选中的中间状态。如果仅仅用bool值无法表示三态,所以多了个属性用来应会这种情况。

解决方案 »

  1.   

    Checked是bool型,只有true/false
    而CheckBox还有个Indeterminate状态
      

  2.   

    大多数情况下,CheckBox是双态的,选中/没有选中。但是有时候我们需要三态的CheckBox,就需要CheckState。功能有重叠是出于方面开发者的考虑。你家电视机既然机身上有按钮可以控制,为什么还要配一个遥控器?
      

  3.   

    如果没有Checked,那么写起来就比较复杂了,比如:
    checkBox1.Checked = App.CanDoSomething;
    如果没有Checked,就要这么写:
    checkBox1.CheckState = App.CanDoSomething ? CheckState.Checked : CheckState.Unchecked;
      

  4.   


    问题是,用户如何让CheckBox处于第三个状态呢? 我感觉选中就是Checked,再点一次就是Unchecked。如何才能从用户的角度把它变成Indeterminate?
      

  5.   


    如果Indeterminate是让空间变灰,那么设置Enable=false不就行了吗,为什么还要弄一个第三状态呢? 
      

  6.   


    问题是,用户如何让CheckBox处于第三个状态呢? 我感觉选中就是Checked,再点一次就是Unchecked。如何才能从用户的角度把它变成Indeterminate?
    它有一个 ThreeState 属性,设置成true。
      

  7.   


    如果Indeterminate是让空间变灰,那么设置Enable=false不就行了吗,为什么还要弄一个第三状态呢? Enabled是是控件不能用。它不能响应用户的单击操作。Indeterminate往往用于表示“部分选择”。比如说安装程序,你这个大组件下一个小组件都没有选,是Unchecked,全选了是Checked,有的选了,有的没选,就是Indeterminate。这两个根本不是一个概念。