Как отменить WinForms TreeView ExpandAll? - PullRequest
0 голосов
/ 22 августа 2009

У меня есть элемент управления TreeView winforms, который позволяет просматривать иерархию объектов. Кстати, между объектами есть несколько циклических ссылок.

У меня нет проблем, позволяющих пользователю перемещаться по круговым ссылкам, но я хочу предотвратить выполнение команды '*' при нажатии клавиши или ExpandAll ().

Как ты это делаешь?

1 Ответ

0 голосов
/ 22 августа 2009

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

Что касается предотвращения нажатия клавиши '*', вы можете подключиться к событию OnKeyDown представления дерева и отменить ключ, используя следующий код:

private void treeView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Multiply)
    {
        e.Handled = true;
        e.SuppressKeyPress = true;
    }
}

В качестве средства защиты вы можете следить за рекурсией в вашей модели контроллера / докладчика / представления и разрешать только определенное количество рекурсий, например, 4.

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