블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2327)N
Unity3D (571)N
Programming (472)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (34)
3DS Max (3)
Game (12)
Utility (116)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (38)
Android (13)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (19)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (9)
Total1,345,498
Today270
Yesterday332
Statistics Graph

달력

« » 2019.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

공지사항

태그목록


오늘부터 본격적으로 ChulsPlayer제작에 들어갔다.

일단 로컬 PC의 음악자원을 기반으로 재생하는 부분을 구현하기 시작했다.

 

간단하게 음악파일을 재생할 수 있는 컨트롤을 만들고,

리스트박스를 만들어서 재생목록이 보여지도록 하였다. (모든 음악재생프로그램에서 제공되는 기능이다.)

 

그런데, 음악파일을 드래그해서 프로그램에 드랍했을 때.. (쉽게 말하면 끌어놓기)

해당 모든 파일들의 리스트를 받아와야 하는데.. 이게 생각만큼 자료가 없더라.

 

그래서 삽질에 삽질을 한 결과..

다음과 같은 과정을 거치면, Drag and Drop된 파일들의 경로를 받아올 수 있다는 것을 알게 되었다.

 

필요하다면 차근 차근 따라해 보도록하자.

 

우선 가장 먼저 해야할 일은 drag and drop을 구현시킬 컨트롤이나 폼에 대하여

AllowDrop 속성을 True로 변경하여야 한다. 헷갈린다면 다음 그림을 참조하도록 하자.

 

이제 여기서는 클래스와 윈도우프로그래밍에 대한 이해가 어느정도 있어야한다.

 

이벤트를 처리해줄 수 있도록 해당 컨트롤의 base클래스로부터 OnDragEnter(DragEventArgs)와

OnDragDrop(DragEventArgs)를 오버라이드하여야 한다.

 

OnDragEnter()는 다음과 같이 구현하면 간단하게 해결이 된다.

 

 

 

그렇다면 파일의 경로를 받아오는것은 OnDragDrop()에서 수행되게 해야할 것이다.

아래와 같은 코드를 적용하면 해당 파일명을 받아올 수 있다.

 

 

 

이렇게 함으로써 여러분은 여러분 프로그램을 사용하는 사용자가 Drag and Drop을 수행하였을 때

파일에 대한 처리를 해줄 수 있을 것이다.

Posted by blueasa
TAG c#, Drag&Drop

댓글을 달아 주세요


먼저 데이터를 받을 폼이나 콘트롤의 AllowDrop 프로퍼티를 True 로 합니다.

그런 다음 DragEnter Event에서 데이터를 확인하시고

DragDrop event에서 실제 처리를 하시면 됩니다.

 

이 예제는 다른 프로그램에서 파일을 드래그해서 리스트에 떨구면 파일을 추가하는 예제입니다.

 

        private void listBox1_DragEnter(object sender, DragEventArgs e)
        {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    e.Effect = DragDropEffects.Copy;
                }
                else
                {
                    e.Effect = DragDropEffects.None;
                }
        }

        private void listBox1_DragDrop(object sender, DragEventArgs e)
        {
            try
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
                {
                    string[] fileNames = (string[])e.Data.GetData(DataFormats.FileDrop);
                    foreach (string fileName in fileNames)
                    {

                        // 여기서 기타 파일에 대한 처리를 해주시면 됩니다.
                        listBox1.Items.Add(fileName);
                    }
                }
            }
            catch (System.Exception ex)
            {
                //예외
            }
        }

출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=95686&ref=95686

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

Singleton  (0) 2010.07.02
창크기 조절 막기  (0) 2010.07.02
파일 드래그&드롭  (1) 2010.06.30
Form-Form 데이터 전달  (0) 2010.06.29
.NET CF에서 WndProc 사용법  (0) 2010.06.29
C# 주의해야 할 문법(dispose,using,close)  (2) 2010.06.28
Posted by blueasa

댓글을 달아 주세요



'Programming > Win32API' 카테고리의 다른 글

IME  (0) 2010.09.02
getClienteRect 와 getWindowRect  (0) 2010.08.31
mfc, api 의 HINSTANCE 구하기 GetModuleHandle(NULL)  (0) 2010.06.03
Virtual Keys, Standard Set  (0) 2010.04.21
Drag & Drop 예제 소스  (0) 2010.04.20
윈도우 핸들 제어  (0) 2010.04.14
Posted by blueasa
TAG Drag&Drop

댓글을 달아 주세요