Алекс, попробуй это.Событие BeforeSelect обработчиков аргументов Cancel связано с тем, что правая мышь нажата.Это подавляет срабатывание измененного SelectedIndex.MouseDown отслеживает нажатие правой кнопки мыши и отображает контекстное меню.Дисплей можно безопасно перемещать в MouseUp вместо MouseDown.MouseUp очищает флаг, указывающий, что кнопка RightMouse нажата.
Вся эта информация о том, как я это сделал, доступна на MSDN.Хитрость заключается в том, чтобы на самом деле прочитать имена всех событий - да, я знаю, что их много, - затем составить список «интересных» в вашем случае, который вы назвали SelectedIndex, и щелкнуть мышью.Это сразу ограничивает имена событий, о которых вы должны подробно прочитать ... Если вы хотите, чтобы текст не выделялся при щелчке правой кнопкой мыши ... ну, это совсем другое дело, и я предостерегаю вас от этого, так как это ценный отзыв пользователя.
bool isRBut = false;
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
isRBut = e.Button == MouseButtons.Right;
if (isRBut)
{
TreeViewHitTestInfo hti =treeView1.HitTest(e.Location);
if (hti.Location == TreeViewHitTestLocations.Label)
contextMenuStrip1.Show(treeView1, new Point(hti.Node.Bounds.Left, hti.Node.Bounds.Bottom));
}
}
private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
isRBut = e.Button == MouseButtons.Right;
}
private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = isRBut;
}
Кроме того, вот вам немного человеческих языковых пустяков.Надеюсь, это поможет вам в будущем.Такие фразы, как «Нет, нет, нет», интерпретируются носителями английского языка как очень грубые.Просто сделайте все возможное, чтобы перечислить поведение, которое вы видите, и поведение, которое вы хотите.Даже если люди неправильно понимают, придерживаются только фактов и оставляют очевидные признаки разочарования.Это поможет вам получить то, что вы после.Также и на SO, если у кого-то есть привычка не принимать ответы, многие участники здесь будут иметь привычку не давать такие ответы в будущем.