Можно ли отключить пункты контекстного меню на основе выбора в Treeview - PullRequest
4 голосов
/ 18 сентября 2010

У меня будут какие-то узлы для дерева, как показано ниже

Root | -> some.txt (текстовый файл, который был добавлен во время выполнения) | -> Child (child for some.txt) | -> child1 (ребенок за ребенком)

Я разработал свое контекстное меню с некоторыми опциями, такими как Новый и Удалить

Что мне нужно, это когда я щелкаю правой кнопкой мыши на Root, дочернем или дочернем элементе, я хочу отключить опцию Удалить

Ответы [ 2 ]

9 голосов
/ 18 сентября 2010

Для ContextMenu вы можете обработать событие ContextMenu.Popup и включить / отключить опции меню перед его отображением.

Для ContextMenuStrip вы можете сделать то же самое, используя Открытие событие.

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

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
  if ((int)treeView1.SelectedNode.Tag == 1)
  {
    removeToolStripMenuItem.Enabled = true;
  }
  else
  {
    removeToolStripMenuItem.Enabled = false;
  }
}
0 голосов
/ 27 сентября 2012
// Remove all the Empty sub menu items
int counter = MainMenu.Items[1].ChildItems.Count;
for(int i=0; i<counter;i++)
{
    foreach (MenuItem item in MainMenu.Items[1].ChildItems)
    {
        if (item.ChildItems.Count != 0)
            continue;
        MainMenu.Items[1].ChildItems.Remove(item);
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...