Ошибка выделения в TreeListView

Использую компонент TreeListView и событие

        private void treeListView1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                ListItem item = (ListItem)treeListView1.SelectedObject;
                if (item != null)
                {
                    System.Diagnostics.Debug.WriteLine(item.DisplayName);
                }
            }
        }

Если сначала выделить элемент ЛКМ, а потом нажать ПКМ, то всё нормально.
Но если сразу нажать ПКМ, то новый элемент выделяется, но выводится информация о том элементе, который был выделен ранее. Или null, если ничего не было выделено.
Проект для теста:

Только там событие ещё не добавлено.

Ну правильно. Потому как событие MouseDown предшествует событию смены выделенного элемента.
Есть же NodeChanged … или как то так.

:thinking: Но тогда получается, что нужна ещё глобальная переменная для хранения выделенного объекта, правильно? А его уже использовать в MouseDown?


        private void treeListView1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                ListItem item = (ListItem)selectedObject;
                if (item != null)
                {
                    System.Diagnostics.Debug.WriteLine(item.DisplayName);
                }
            }
        }

        private void treeListView1_SelectionChanged(object sender, EventArgs e)
        {
            selectedObject = treeListView1.SelectedObject;
        }

И в чём разница? :thinking: То же самое получается.

От задачи зависит что нужно.
Для меню по ПКМ есть ContextMenuStrip.

Нажать ПКМ на невыделенном объекте и получить из него информацию. Я ведь уже объяснил :man_shrugging:

И что? Как это связано с темой?

Точнее говоря, тут дело не в кнопке мыши. Можно нажимать любой кнопкой. SelectedObject выдаёт предыдущий объект, а не тот на который переключились. Чё за ХРень?
Интересно, в обычном TreeView так же? :thinking:

Когда что-то есть, этого ещё не достаточно. Много ли толку, когда есть, но не работает? :thinking: Оно просто есть. Ну, точнее, работает конечно. Только вот, кто придумал визуально выделять, если оно ещё, по факту, не выделено? :man_facepalming:
Если MouseDown приходит раньше переключения, то какой смысл визуально менять выделение-то?

Выше ж написано. Это событие срабатывает до обработки выделения.

MouseUp можно )

Или смотреть события от самого контрола типа CellClick.

Оно и по клаве так же получается, вроде :thinking:
А не, сорян, это я неандерталец. Только с дерева слез.
Но тогда почему оно по ПКМ визуально выделяется, а по факту не выделено? :man_shrugging: В чём сакральный смысл делать именно так, а не нормально? :thinking:

А если в MouseDown надо?

Ну так обработка выделения просто позже происходит.
Это событие не связано с ним, оно и при клике в пустое место сработает.

:arrow_down: