Alex, Попробуйте это. Событие args BeforeSelect args Отмена привязана к тому, что правая мышь не работает. Это подавляет сжигание 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, если у кого-то есть привычка не принимать ответы, многие члены здесь будут иметь привычку не предоставлять будущие ответы таким членам.
используйте комментарии по запросу, если вы хотите уточнений. И, пожалуйста, держите дискурс гражданским. –