2013-05-15 6 views
0

사용자가 선택 항목을 마우스 오른쪽 버튼으로 클릭하면 선택/강조 표시하지 않고 예를 들어 문제를 해결하려고합니다. "삭제"를 선택하면 클릭 한 이전 선택이 삭제됩니다. mouse_down 이벤트 사용에 관한 많은 게시물을 읽었지만 시도한 것은 아무것도 나에게 적합하지 않은 것처럼 보였습니다. 다음은 현재 코드입니다 :TreeNode 오른쪽을 클릭하여 작동하지 않음을 선택하십시오.

private void treelocations_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
{ 
    if (e.Button == System.Windows.Forms.MouseButtons.Right) 
    { 
     Point pos = new Point(); 
     pos.X = e.X; 
     pos.Y = e.Y; 
     mnulocation.Show(this.treelocations, pos); 
    } 
} 

간단히 목록의 선택을 마우스 오른쪽 버튼으로 클릭하고 해당 레코드를 선택/강조 표시 할 수 있습니다.

+0

는이 EventHadler 내부에 중단 점을 넣어하려고 노력 필요 얻을 수 있도록해야합니까? 작동합니까? 아니요, 아니면 약간의 오류가 있습니까? EventHadler가 폼 생성자로 연결되어 있습니까? 또한, 아마도이 스레드는 귀하의 문제와 관련이 있습니다 - http://stackoverflow.com/questions/4784258/right-click-select-on-net-treenode?rq=1? –

+0

'Nodes '와 상호 작용하는 가장 쉬운 방법은 TreeView에서 모든 마우스 이벤트를 처리하고 ['TreeView.GetNodeAt (Point)'] (http : // msdn. microsoft.com/en-us/library/1yxbz43s.aspx) 사용자가 가리키는 노드를 가져옵니다. ('MouseEventArgs'에있는 좌표를 allready 'TreeView'에 상대적으로 전달할 수 있습니다.) – VisualMelon

+0

나는 작동하는 무언가를 게시하고 switch 문을 사용하여 원하는 작업을 제어 할 수 있습니다. 당신이'TreeNodes MouseClick Event'에 있어야하는 잘못된 이벤트에서 사용하는 코드도 – MethodMan

답변

0

마우스 다운 이벤트 발생시 선택한 노드를 변경해야합니다.

을 살펴 보자 Selected Node Property

을 아니면 한 번 봐 걸릴 수 : NodeMouseClick 이벤트를.

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
    { 
     if (e.Button == System.Windows.Forms.MouseButtons.Right) 
     { 
      treeView1.Nodes.Remove(e.Node); 
     } 
    } 
0

필요에 따라 다른 case 문에 추가 할 수 있지만 당신이

private void treelocations_MouseClick(object sender, MouseEventArgs e) 
{ 
     switch(e.Button) 
     { 
      case MouseButtons.Right: 
      { 
       Point pos = new Point(); 
       pos.X = e.X; 
       pos.Y = e.Y; 
       treeView1.Focus(); 
       MessageBox.Show(treelocations.SelectedNode.Text); 
       break; 
      } 
     } 
}