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 이벤트 항목을 텍스트 상자에 넣기 위해이 예제를 변경하고 정상적으로 작동했지만 작업을 시도했을 때 텍스트 상자 위에 값을 떨어 뜨릴 때와 똑같은 결과를 얻지 못했습니다.
목록 상자 항목을 끌어다 놓으시겠습니까? – DevDemon
잘 응용 프로그램에서 네,하지만이 예제에서는, 난 그냥 MouseDown 때 패널 DragDrop 이벤트가 작동하는지 알고 싶습니다. – TheJediCowboy