C # Почему узел дерева отображается по нажатию, когда отменено установлено в значение true? - PullRequest
1 голос
/ 18 мая 2010

В моем приложении winform у меня есть древовидная структура. Чтобы дать представление о том, что узел отключен, я установил передний цвет узла и, когда сработал BeforeSelect, установил для e.cancel значение true.

Однако, когда тег узла соответствует некоторым критериям, узел может быть выбран. Вот почему у меня есть NodeMouseClick. Но когда узел нельзя щелкнуть, я устанавливаю значение e.cancel в значение true в событии BeforeSelect.

Проблема теперь в том, что событие NodeMousClick всегда запускается, и весь код запускается, даже когда я установил для e.cancel значение true в событии BeforeSelect. Почему это так?

Ответы [ 2 ]

4 голосов
/ 18 мая 2010

Поскольку узел не будет / не будет выбран (вы отменили его), но по-прежнему нажимается.

После того, как вы завершили «проверить, может ли узел быть выбран подпрограммой» и не отменили его (для этого: активировал клик); проверить, выбран ли узел

    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        if (e.Node != null && e.Node.IsSelected)
        { //dostuff; 
        }
0 голосов
/ 18 мая 2010

Я бы предположил, что установка Cancel в true в событии BeforeSelect скорее предотвратит повышение AfterSelect. В конце концов, узел все еще был нажат. Вопрос в том, приводит ли щелчок к выбранному узлу или нет.

Если возможно, я бы переместил логику в обработчик событий AfterSelect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...