2

在处理选中的列表框时,我偶然发现了 SetItemChecked 和 SetItemCheckState。

SetItemChecked 采用 listindex 和 True/false 将列表项设置为选中或未选中。

SetItemCheckState 采用 listindex 和 CheckState-enum 将状态设置为选中、未选中或不确定。

为什么 SetItemChecked 存在,而 SetItemCheckState 确实涵盖了所有状态?

是否只是为了方便使用布尔值,因为它是检查/取消选中的最常见用途,还是我错过了什么?

如果只是为了更容易使用布尔值,为什么不把它作为函数的重载呢?

谢谢。

4

4 回答 4

3

没有真正的区别。SetItemCheck 像这样调用 SetItemCheckedState:

public void SetItemChecked(int index, bool value)
{
    this.SetItemCheckState(index, value ? CheckState.Checked : CheckState.Unchecked);
}

就像您已经假设的那样,我想这只是一种帮助开发人员简化事情的方法。

于 2009-03-11T13:58:31.473 回答
2

我投票给

是否只是为了方便使用布尔值,因为它是检查/取消选中的最常见用途,还是我错过了什么?

但是通常不会使用额外的功能(仅添加了 Indeterminate 情况)

编辑: CheckedListBox.SetItemCheckState(1, CheckState.Checked) 难以阅读(但清楚) CheckedListBox.SetItemChecked(1, true) 更容易阅读

于 2009-03-11T13:36:35.520 回答
1

这是因为想要根据布尔值检查/取消检查更为常见,并且避免必须这样做:

listbox.SetItemCheckState(i, value ? CheckState.Checked : CheckState.UnChecked)

每时每刻。此外,它不是重载,因为它反映了 CheckBox 的 Checked 和 CheckState 属性。

于 2009-03-11T14:00:02.530 回答
0

很清楚,但令人惊讶的是,这里没有人提到它:

.SetItemChecked()您只能选中或取消选中一个项目,同时您还可以将项目选中状态设置为“不确定”,当使用 3D 复选框时,这.SetItemCheckState()将在项目上提供一个阴影复选框。

于 2015-04-07T11:29:51.427 回答