Дважды щелкните beavior на флажке TreeNode - PullRequest
4 голосов
/ 16 марта 2011

У меня есть TreeView, заполненный TreeNodes с иконками и флажками.

Я пытался отключить возможность проверки / снятия отметки у некоторых из них, отбрасывая событие в методе BerforeCheck,Это работает нормально, пока я дважды не нажму на флажок: изображение флажка противоположно его реальному состоянию (оно показывает флажок, если статус Checked=false).Я пытался исправить это изменение StateImageIndex вручную в методе NodeDoubleClick и BeforeClick безуспешно.

Еще хуже: я добавил третье изображение в StateImageList (да, я хочу установить флажкитоже в трех состояниях), но я еще не использую его (он никогда не устанавливается в моем коде), а третье изображение устанавливается как текущее состояние поля после некоторого двойного щелчка (на данный момент я не могуопределить четкое поведение).

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

PS: Вопрос уже задавался , но ответа не было ...

1 Ответ

5 голосов
/ 11 апреля 2011

Попробуй это .. :) у меня сработало

public class NewTreeView : TreeView
    {
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x203)
                m.Result = IntPtr.Zero;
            else
                base.WndProc(ref m);
        }
    }
...