我正在做一些非常非常简单的事情。
我有一个列表框,其事件设置如下:
public Form1()
{
InitializeComponent();
this.listBox1.AllowDrop = true;
this.listBox1.DragEnter += new DragEventHandler(listBox1_DragEnter);
this.listBox1.DragDrop += new DragEventHandler(listBox1_DragDrop);
}
void listBox1_DragDrop(object sender, DragEventArgs e)
{
//code to add labelText to Items of ListBox
}
void listBox1_DragEnter(object sender, DragEventArgs e)
{
//set DragDropEffects;
}
现在我有了一个标签,其代码如下:
private void label1_MouseDown(object sender, MouseEventArgs e)
{
DoDragDrop((sender as Label).Text, DragDropEffects.Copy);
//this.label1.DoDragDrop((sender as Label).Text, DragDropEffects.Copy);
//used one of them at a time.
}
但是没有任何反应。列表框 DragEnter 事件永远不会触发。事实上,阻力永远不会发生。
每当我尝试拖动标签(文本)时,不允许出现窗口光标,而不是 'DragDropEffects.Copy
的光标
拖放不发生..
当我修改列表框(和相关代码)以接受从任何其他窗口拖放到它上面的文件时,效果很好。
所以..我无法执行从保存在表单上的控件到保存在同一表单上的另一个控件的拖动。
我错过了什么吗?我正在运行 Windows XP。
请帮忙...
最佳答案
您的代码确实有效。 您只需在事件处理程序中设置正确的拖动效果。
void listBox1_DragDrop(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
void listBox1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
关于c# - 将一个控件拖放到winform中的另一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647286/