Переопределение C # CheckedListBox - PullRequest
2 голосов
/ 09 января 2010

мне нужно переопределить базовое поведение CheckedListBox.

можно проверять и снимать флажок CheckedListBox без какого-либо кода, прикрепленного к нему.

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

есть идеи?

спасибо. .

например:

if (ListenCheckedListBox.GetItemChecked (0)) { ListenCheckedListBox.SetItemChecked (0, false); }

if (! ListenCheckedListBox.GetItemChecked (0)) { ListenCheckedListBox.SetItemChecked (0, true); }

не работает, потому что поведение элементов управления по умолчанию уже делает это.

надеюсь, теперь вы понимаете мою проблему.

Ответы [ 2 ]

0 голосов
/ 09 января 2010

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

да я был глупым!

0 голосов
/ 09 января 2010

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

Насколько я понимаю ваш вопрос, вы не хотите, чтобы элементы выбирались, когда пользователь щелкает по ним, вы хотите полностью контролировать выбор из своего кода.

Для этого вы можете переопределить метод OnItemCheck и управлять новым значением, которое устанавливается:

public class CheckedListBoxEx : CheckedListBox
{
    protected override void OnItemCheck(ItemCheckEventArgs ice)
    {
        ice.NewValue = ice.CurrentValue;
    }
}

Это также можно сделать, просто обработав событие ItemCheck.

...