Добавить обработчик для MouseUp. В обработчике проверьте аргументы правой кнопкой мыши, верните, если это не так. Вызовите treeView.GetNodeAt() с координатами мыши, чтобы найти узел. Создайте контекстное меню.
Вот что-то подобное для управления списком, который может быть адаптирован для TreeView:
private void listJobs_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
int index = listJobs.IndexFromPoint(e.Location);
if (index != ListBox.NoMatches)
{
listJobs.SelectedIndex = index;
Job job = (Job)listJobs.Items[index];
ContextMenu cm = new ContextMenu();
AddMenuItem(cm, "Run", QueueForRun, job).Enabled = !job.Pending;
AddMenuItem(cm, "Cancel run", CancelQueueForRun, job).Enabled = (job.State == JobState.Pending || job.State == JobState.Running);
AddMenuItem(cm, "Open folder", OpenFolder, job);
cm.Show(listJobs, e.Location);
}
}
}
private MenuItem AddMenuItem(ContextMenu cm, string text, EventHandler handler, object context)
{
MenuItem item = new MenuItem(text, handler);
item.Tag = context;
cm.MenuItems.Add(item);
return item;
}
Вам может понадобиться использовать PointToClient или PointToScreen на форме, чтобы перевести координаты соответственно. Вы скоро поймете, что вам нужно, когда контекстное меню появится не в том месте.
Вы используете Windows Forms или WPF? –
Да окна форм. Извините, забыл упомянуть об этом. И Visual Studio 2005. – zack