2009-10-19 5 views
3

나는 ListTV에 drag & 드롭을 구현하고있다. 나는 ListViewItem을 가져올 때 커서 아래에 놓았지만 마우스 커서 아래에 ListViewItem을 가져오고 싶습니다. sth를 드래그합니다. ListView 컨트롤을 통해.sth를 드래그하는 동안 MouseCursor에서 ListViewItem을 가져 오는 방법. 그것 이상

폴더 위로 파일을 드래그 할 때 Windows 탐색기 에서처럼 ListViewItem (selected = true)을 선택하고 싶습니다.

ListView의 ItemMouseHover, MouseMove와 같은 이벤트에 대해 생각했지만 sth를 드래그하면 해고되지 않습니다. 그걸로. 내가

답변

2

.Net2.0을 사용하고 당신이 DragOver 이벤트에 응답 시도 유무 :

는 PS

감사합니다,

INNO ... 당신이 나를 도울 수 있기를 바랍니다 listview 클래스? 이런 식으로 할 수 있어야합니다.

private void listBox_DragOver(object sender, 
    DragEventArgs e) 
{ 
    //for ListView 
    var point = listView.PointToClient(new Point(e.X, e.Y)); 
    var item = listView.GetItemAt(point.X, point.Y);  
    if(item != null) 
    { 
    //do whatever - select it, etc 
    } 


    //or, for ListBox 
    var indexOfItem = 
    listBox.IndexFromPoint(listBox.PointToClient(new Point(e.X, e.Y))); 
    if (indexOfItem != ListBox.NoMatches) 
    { 
    //do whatever - select it, etc 
    } 
} 
+0

와우, 독일어 간단한 설명 DragOver sth 말한다. like : 요소가 ListView 컨트롤의 테두리 위로 드래그되는 경우 발생합니다 (따라서 요소가 ListView의 테두리 밖으로 드래그 된 경우 한 번만 DragOver가 발생합니다). 대단히 감사합니다! – Inno

+1

ListView 정보가 아니라 ListBox 정보를 자세히 보여줍니다. –

+0

@PeterRitchie 예, 그냥 ListBox였습니다. 추가 된 ListView 블록은 그 이후로 질문을위한 것입니다. –

1

당신이있는 ListView에서 드래그 앤 드롭을하고 있다면, 당신은 ObjectListView의 코드 (.NET 윈폼의 ListView 주위에 오픈 소스 래퍼)을보고 많은 것을 배울.

일반 ListView 대신 ObjectListView를 사용하면 끌어서 놓기와 같은 많은 작업이 자동으로 수행됩니다.

+1

나는 당신이 ObjectListView 뒤에있는 사람이라고 생각 하나? (SO 및 CodeProject에서 귀하의 프로필을 간략하게 살펴 봤음);). 힌트를 보내 주셔서 감사합니다. ObjectListView가 멋지다! – Inno

+1

예. 나는 저자 야. 그래서, 나는 편향되어 있습니다 -이 경우에도 정확합니다 :) – Grammarian

관련 문제