SetItemChecked (индекс, логическое значение) VS SetItemCheckState (индекс, состояние проверки)

Я только что наткнулся на SetItemChecked и SetItemCheckState при работе с проверенным списком.

SetItemChecked принимает listindex и True/False, чтобы установить для элемента списка отмеченный или непроверенный.

SetItemCheckState принимает listindex и CheckState-enum, чтобы установить состояние на Checked, Unchecked или Indeterminate.

Почему SetItemChecked существует, когда SetItemCheckState охватывает все состояния?

Это просто для того, чтобы упростить использование логического значения, потому что оно чаще всего используется для проверки/снятия отметки, или я что-то пропустил?

И если это просто для того, чтобы упростить использование логического значения, почему бы не использовать его как перегрузку функции?

Спасибо.


person Stefan    schedule 11.03.2009    source источник


Ответы (4)


На самом деле разницы нет. SetItemCheck вызывает SetItemCheckedState следующим образом:

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

Как вы уже догадались, я думаю, это просто вспомогательный метод, облегчающий работу разработчика.

person J. Steen    schedule 11.03.2009
comment
Интересно, почему они не использовали ОДНО имя для метода, перегруженного любым типом аргумента. Чисто и легко для разработчика... ИМХО - person Eske Rahn; 02.07.2018

я голосую за

Это просто для того, чтобы упростить использование логического значения, потому что оно чаще всего используется для проверки/снятия отметки, или я что-то пропустил?

Но дополнительная функция, как правило, не используется (добавляется только неопределенный случай).

РЕДАКТИРОВАТЬ: CheckedListBox.SetItemCheckState(1, CheckState.Checked) ужасно читать (но ясно) CheckedListBox.SetItemChecked(1, true) легче читать

person RvdK    schedule 11.03.2009

Это связано с тем, что гораздо чаще требуется установить/снять флажок в зависимости от логического значения и избежать необходимости делать это:

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

все время. Кроме того, это не является перегрузкой, поскольку отражает свойства Checked и CheckState элемента CheckBox.

person Laurent    schedule 11.03.2009

Это очень ясно, но удивительно, что никто не упомянул об этом здесь:

С помощью .SetItemChecked() вы можете только отметить или снять отметку с элемента, в то время как вы также можете установить состояние отмеченного элемента на «Неопределенное» с помощью .SetItemCheckState(), что обеспечит затененный флажок для элемента при использовании флажков 3D.

person Roni Tovi    schedule 07.04.2015