2010-08-10 2 views
0

У меня есть TreeView, который представляет некоторые файлы/папки в файловой системе Windows. я хочу, чтобы иметь возможность щелкнуть правой кнопкой мыши и отобразить стандартное контекстное меню Windows. Тег узла содержит путь к файлу. Я потратил немало времени на исследования, и нашел это: http://www.codeproject.com/KB/cs/shellContextMenu.aspxКонтекстное меню проводника Windows Вопрос

Однако, кажется, отсутствует элемент «Переименовать». Поэтому я хочу получить это обратно.

Я также хочу знать, как обращаться с функциями. Например, если пользователь переименовывает или удаляет файл, я хочу удалить этот узел/переименовать этот узел соответственно.

Я программирования в C#, .NET 4.

ответ

0

Вам нужно включить флаг CMF_CANRENAME в параметре uFlags в IContextMenu.QueryContextMenu, чтобы указать, что приложение хоста поддерживает переименование элементов.

+0

Как бы интегрировать его с моим древовидным представлением, чтобы вызвать режим редактирования? На дереве есть свойство IsEditable, поэтому я хочу иметь возможность правильно его поддерживать. – Eaton

+0

После того, как TrackPopupMenu вернет выбранный идентификатор команды, вы передадите его в IContextMenu.GetCommandString с GCS_VERB. Если возвращаемый глагол «переименован», вы должны использовать встроенную возможность редактирования элемента управления TreeView (TreeNode.BeginEdit). Наконец, примените изменение имени, вызвав IShellFolder.SetNameOf. Вы также можете проверить, возвращает ли IShellFolder.GetAttributesOf SFGAO_CANRENAME, прежде чем добавлять пункт меню «Переименовать». –

Смежные вопросы