2012-09-02 3 views
0

Col1 및 Col2에서 RMB을 클릭하여 이벤트를 잡아 내고 이벤트가 달라야하는 경우이를 수행 할 수 있습니까?이벤트 만들기 : ListView에서 임의의 영역을 클릭 하시겠습니까?

enter image description here

+1

를 추가 말했듯이 MouseDown 이벤트를 사용하여 클릭 된 것을보고() ListView.HitTest를 호출합니다. 그에 따라 자신의 사건을 해고하십시오. –

+0

http://stackoverflow.com/questions/7844306/can-i-detect-if-a-user-right-clicked-on-a-listview-column-header-in-winforms을보세요 – coolmine

답변

2

는 @HansPassant는 MouseUp 이벤트

void listview1_MouseUp(object sender, MouseEventArgs e) 
    { 
     ListViewItem item = listview1.GetItemAt(e.X, e.Y); 
     ListViewHitTestInfo info = listview1.HitTest(e.X, e.Y); 

     if ((item != null) && (info.SubItem != null)) 
     { 
      //item.SubItems.IndexOf(info.SubItem) gives the column index 
      MessageBox.Show(item.SubItems.IndexOf(info.SubItem).ToString()); 
     } 
    } 
+0

감사합니다. 'myTreeView.FullSelectRow = true'를 사용하면'TreeView'를 사용하여 동일한 작업을 수행 할 수 있습니까? 텍스트 영역과 노드의 다른 필드에서 마우스 클릭 이벤트를 분리 할 수 ​​있습니까? – Steven

+0

여기서 무엇을 검색 하시겠습니까? listview에서 열 인덱스를 원하셨습니까? * 레벨은 * @Steven – S3ddi9

+0

일 수 있습니다. 예를 들어, 텍스트 영역에있는 경우 'true', 그렇지 않으면'false', 위치를 알고 싶음 – Steven

0

사용 DataGridView에리스트 뷰의 insted. DataGridView는 이미 셀 클릭을 지원합니다.

private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 
     string message = "You have clicked " + (e.ColumnIndex + 1).ToString() + " cell inside " + (e.RowIndex + 1).ToString() + " row!"; 
     MessageBox.Show(message, "Click info", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 

ListView는 테이블 형식 데이터와 함께 사용할 수 없습니다. 주된 용도는 목록이며, 좋은 예는 Windows 탐색기입니다.

관련 문제