728x90

C#에서 TreeView를 생성 후 TreeView에 ContextMenu를 지정해 주고

 

 

 

ContextMenu는 선택된 TreeNode에 대한 어떤 기능을 수행한다고 가정하자.

 

 

 

TreeView를 선택해서 선택한 TreeNode에 마우스 우클릭을 하면 ContextMenu가 나온다.

 

 

하지만 어떤 node에 마우스 우클릭으로 선택과 동시에 ContextMenu를 띄울려고 하면,

 

 

아래와 같이 잘되지 않는다.

 

 

 



위의 그림은 P002를 선택되어 있는 상태에서 TreeView에서 P002의 세번째 하위노드를

 

 

마우스 우클릭을 한 그림이다.

 

 

 

사용자가 원하는것은 세번째 하위노드에 마우스 우클릭을 하면 바로 선택과 동시에

 

 

해당 노드의 ContextMenu가 뜨는 것이다.

 

 

 

 

그렇게 하기 위해서는 TreeView의 NodeMouseClick 이벤트를 설정 해 주어야 한다.

 

 

 

NodeMouseClick 이벤트는 TreeView의 노드를 클릭할 때 마다 실행되는 이벤트 이다.

 

 

 

여기서 알아둘 것은, 마우스 왼쪽, 오른쪽 버튼 둘 다 NodeMouseClick으로 처리 한다는 것이다.

 

 

 

 

 

NodeMouseClick에 다음의 코드를 입력한다.

 

 

 



위의 코드를 treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y); 로 하는게

 

 

unboxing도 일어나지 않고 더 간결해 보이지만,

 

 

 

만약 TreeView 여러개에서 같은 이벤트를 발생시킬 때에는 위의 방법이 더 효율적고 일반적이다.

 

출처 :

http://han1000jae.blog.me/80116995974
728x90

'C#' 카테고리의 다른 글

c# datagridview excel export  (0) 2014.07.13
c# datagridview textalign  (0) 2014.07.13
크리스탈리포트 데이터베이스 로그인 알림창 뜰 때  (0) 2014.07.06
c# ini  (0) 2014.07.04
크리스탈리포트 개발 방법  (0) 2014.07.03

+ Recent posts