2011-01-17 2 views
0

C# .NET에서 이벤트 처리를 처음 사용하고 있으며 실험하고있는 간단한 코드의 작동을 이해하려고합니다. 좀 더 복잡한 예제로 작업하고 있지만 예제를 단순화하면보다 집중적 인 대답을 얻길 기대합니다.간단한 드래그 앤 드롭 이벤트 처리 문제

값으로 초기화 된 ListBox와 창에 패널로 구성된 기본 창을 정의하는 다음 코드가 있습니다. ListBox Items를 드래그하여 패널에 놓는 작업을하고 있습니다. 패널이 DragDrop 이벤트를 읽고 있음을 나타 내기 위해 배경색을 변경하기 만하면됩니다.

내 문제는, 값을 놓을 때 배경색이 변경되지 않으므로 DragDrop이 작동하지 않는다는 것입니다. 나는 이것이 약간 과장된 것을 알고 있지만, 왜 그것이 작동하지 않는지 이해하려고 노력하고있다.

다음 코드는 현재 사용하고 있습니다.

 public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     //Allow Panel to accept dropped values 
     this.panel1.AllowDrop = true; 

     //Initialize ListBox with sample values 
     listBox1.Items.Add("First Name"); 
     listBox1.Items.Add("Last Name"); 
     listBox1.Items.Add("Phone"); 

     //Setup DragDrop Event Handler - is this correct, or even needed? 
     this.panel1.DragDrop += new DragEventHandler(panel1_DragDrop); 
    } 

    private void listBox1_MouseDown(object sender, MouseEventArgs e) 
    { 
     ListBox box = (ListBox)sender; 
     String selectedValue = box.Text; 
     DoDragDrop(selectedValue.ToString(), DragDropEffects.Copy); 
    } 

    private void panel1_DragDrop(object sender, DragEventArgs e) 
    { 
     //Change Background color to signify value has been dropped 
     ((Panel)sender).BackColor = Color.Black; 
    } 

} 

나는 이것이 지나치게 단순화 된 예임을 알고 있습니다. 내가 뭘 잘못하고 있는지 알게되면 알려주세요.
EDIT 내가 혼란스러워하는 이유의 예를 들자면 DragOver 이벤트가 발생했을 때 DragBox 이벤트 항목을 텍스트 상자에 넣기 위해이 예제를 변경하고 정상적으로 작동했지만 작업을 시도했을 때 텍스트 상자 위에 값을 떨어 뜨릴 때와 똑같은 결과를 얻지 못했습니다.

+0

목록 상자 항목을 끌어다 놓으시겠습니까? – DevDemon

+0

잘 응용 프로그램에서 네,하지만이 예제에서는, 난 그냥 MouseDown 때 패널 DragDrop 이벤트가 작동하는지 알고 싶습니다. – TheJediCowboy

답변

1

패널의 DragEnter 이벤트를 처리하고 e.EffectsNone 이외의 것으로 설정하십시오.

+0

SLaks, 나는 이것을 조금 오해하고 있습니다 ... 조금 더 자세히 설명해 주시겠습니까? 감사합니다. – TheJediCowboy

+0

설명서를 참조하십시오. http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop.aspx – SLaks

+0

컨트롤 (패널, 레이블 등) 처리 DragOver/DragEnter 이벤트 및 e.Effetc = 설정. ... 도와 주셔서 감사합니다. – TheJediCowboy