2009-03-11 4 views
1

Je viens de tombé sur le SetItemChecked et SetItemCheckState lorsque vous travaillez sur une zone de liste vérifiée.SetItemChecked (index, booléen) VS SetItemCheckState (index, checkState)

Le SetItemChecked prend un index de liste et Vrai/Faux pour soit mettre la liste à cocher ou non cochée.

Le SetItemCheckState prend un listindex et un CheckState-enum pour définir l'état soit de vérifier, sans contrôle ou indéterminés.

Pourquoi SetItemChecked existe-t-il lorsque SetItemCheckState couvre tous les états?

Est-ce juste pour faciliter l'utilisation d'un booléen parce que c'est l'utilisation la plus courante pour cocher/décocher ou est-ce que j'ai manqué quelque chose?

Et si c'est juste pour faciliter l'utilisation d'un booléen, pourquoi ne pas l'avoir comme une surcharge de la fonction?

Merci.

Répondre

3

Il n'y a pas de réelle différence. appelle SetItemCheck SetItemCheckedState comme ceci:

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

Comme vous avez déjà pris, je suppose que c'est juste une aide-méthode pour simplifier les choses pour le développeur.

1

Je vote pour

Est-il juste pour le rendre facile à utiliser un booléen parce que son l'utilisation la plus courante de cocher/décocher ou a je manqué quelque chose?

Mais la fonction supplémentaire sera normalement utilisé ne sera pas en (seul le cas indéterminés est ajouté)

EDIT: CheckedListBox.SetItemCheckState (1, CheckState.Checked) est horrible à lire (mais clair) CheckedListBox .SetItemChecked (1, true) est plus facile à lire

1

Il est parce qu'il est beaucoup plus fréquent de vouloir cocher/décocher en fonction d'une valeur booléenne, et pour éviter d'avoir à faire:

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

tout le temps. En outre, il n'est pas une surcharge, car les propriétés est des miroirs vérifiés et checkState de la case correspondante.

0

Il est très clair mais étonnamment Noone mentionné ici:

Avec .SetItemChecked() vous pouvez uniquement cocher ou décocher un élément alors que vous pouvez également définir un objet vérifié l'état de « indéterminés » par .SetItemCheckState() qui fournira une case à cocher ombrée sur le point lors de l'utilisation de cases à cocher 3D.