Alex, 시도해보십시오. BeforeSelect 핸들러 이벤트 args Cancel은 마우스 오른쪽을 눌렀을 때 발생합니다. SelectedIndex가 실행되는 것을 억제합니다. MouseDown은 마우스 오른쪽 버튼을 누른 경우 컨텍스트 메뉴를 표시합니다. 디스플레이는 MouseDown 대신 MouseUp으로 이동하는 것이 안전합니다. 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;
}
또한 여기에 약간의 인간 언어 퀴즈가 있습니다. 바라기를 이것은 미래에 당신을 도울 것입니다. "아니, 아니, 아니"와 같은 문구는 영어 원어민이 매우 무례하다고 해석합니다. 보고있는 행동과 원하는 행동을 나열하기 위해 최선을 다하십시오. 사람들이 오해를하더라도 사실에만 집중하고 좌절감의 뚜렷한 징후를 남기지 마십시오. 이것은 당신이 뭘하고 있는지 얻을 수 있도록 도와 줄 것입니다. 뿐만 아니라 다른 사람들이 답변을받지 않는 습관이있는 경우, 많은 회원은 앞으로 회원들에게 답변을 제공하지 않는 습관을 갖게됩니다.
설명을 원할 경우 답변 아래에 주석을 사용하십시오. 그리고 담론을 시민들에게 공개하십시오. –