2

チェックされたリストボックスで作業しているときに、SetItemChecked と SetItemCheckState に出くわしました。

SetItemChecked は listindex と True/false を取り、listitem をチェック済みまたは未チェックに設定します。

SetItemCheckState は、listindex と CheckState-enum を使用して、状態をチェック済み、未チェック、または不確定のいずれかに設定します。

SetItemCheckState がすべての状態をカバーするのに、なぜ SetItemChecked が存在するのですか?

ブール値を簡単に使用できるようにするためですか?これは、チェック/チェック解除するための最も一般的な使用法であるか、または何かを見逃しているためですか?

そして、ブール値を使いやすくするだけなら、それを関数のオーバーロードとして持たないのはなぜですか?

ありがとう。

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

に投票します

ブール値を簡単に使用できるようにするためですか?これは、チェック/チェック解除するための最も一般的な使用法であるか、または何かを見逃しているためですか?

ただし、余分な関数は通常は使用されません (不定のケースのみが追加されます)。

編集: 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 に答える