我不确定您对表单有哪些类型的控制。但是我用一个按钮、一个组框、一个图片框和一个文本框进行了测试。默认情况下,所有这些控件都有AllowDrop = false
。我可以从外面拖放一些东西到表格上。被DragDrop
解雇了。一切都好。你的实际问题是什么?我猜你的控件有AllowDrop = true
。
如果DragDrop
事件没有被触发(我认为只有当目标是你的 Control 之一时才会发生AllowDrop = true
)。我认为以下可能有效。但是,如果目标是您的 Control 之一AllowDrop = true
,则效果图标将消失。
public Form1(){
InitializeComponents();
t.Interval = 1;
t.Tick += Tick;
}
IDataObject data;
Timer t = new Timer();
int i = 0;
private void Tick(object sender, EventArgs e)
{
Text = (i++).ToString();
if (ClientRectangle.Contains(PointToClient(new Point(MousePosition.X, MousePosition.Y))) && MouseButtons == MouseButtons.None)
{
t.Stop();
if (data != null)
{
//Process data here
//-----------------
data = null;
}
}
else if (MouseButtons == MouseButtons.None)
{
data = null;
t.Stop();
}
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = e.AllowedEffect;
if (data == null)
{
data = e.Data;
t.Start();
}
}
而且我认为您可能必须在所有控件中使用循环来添加适当的事件处理程序。没有其他更好的方法。