如何让应用程序知道 DragDrop?
How to make an application DragDrop aware?
我正在尝试制作一个应用程序,我想在其中将文件从资源管理器直接拖放到应用程序,并且 DataGridView 使用有关已删除文件的信息更新其条目。
这样做不是问题,但我真正想要的是更新表单的 UI 并显示某种消息,例如 'Drop files here to update' 就在我浏览保存文件的应用程序时(还没有掉线)。
我发现 Control.GiveFeedback
可以用来实现我想要的,但不知何故,即使在订阅了事件之后,它也没有被调用。
这是我处理 DragDrop 事件的方式:
private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
FileInfo[] DroppedFiles = ((string[])e.Data.GetData(DataFormats.FileDrop)).Select(x => new FileInfo(x)).ToArray();
foreach (FileInfo File in DroppedFiles)
{
TrackInfo Track = new TrackInfo(File.FullName);
PlaylistSource.Add(Track);
}
}
先谢谢你。
DragOver
和 DragLeave
是我必须订阅的事件,以便让应用程序了解潜在的 DragDrop
事件。
我是这样处理事件的:
private void label1_DragOver(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Link;
//Updating UI Controls when file dragged over
label1.BackColor = Color.Green;
label1.ForeColor = Color.White;
}
}
private void label1_DragLeave(object sender, EventArgs e)
{
//Updating UI Controls when file no longer being dragged over
label1.BackColor = SystemColors.Control;
label1.ForeColor = Color.Black;
}
当然一定不要忘记设置控件的AllowDrop
属性,让控件真正变成“DragDrop Aware”。
我正在尝试制作一个应用程序,我想在其中将文件从资源管理器直接拖放到应用程序,并且 DataGridView 使用有关已删除文件的信息更新其条目。
这样做不是问题,但我真正想要的是更新表单的 UI 并显示某种消息,例如 'Drop files here to update' 就在我浏览保存文件的应用程序时(还没有掉线)。
我发现 Control.GiveFeedback
可以用来实现我想要的,但不知何故,即使在订阅了事件之后,它也没有被调用。
这是我处理 DragDrop 事件的方式:
private void dataGridView1_DragDrop(object sender, DragEventArgs e)
{
FileInfo[] DroppedFiles = ((string[])e.Data.GetData(DataFormats.FileDrop)).Select(x => new FileInfo(x)).ToArray();
foreach (FileInfo File in DroppedFiles)
{
TrackInfo Track = new TrackInfo(File.FullName);
PlaylistSource.Add(Track);
}
}
先谢谢你。
DragOver
和 DragLeave
是我必须订阅的事件,以便让应用程序了解潜在的 DragDrop
事件。
我是这样处理事件的:
private void label1_DragOver(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Link;
//Updating UI Controls when file dragged over
label1.BackColor = Color.Green;
label1.ForeColor = Color.White;
}
}
private void label1_DragLeave(object sender, EventArgs e)
{
//Updating UI Controls when file no longer being dragged over
label1.BackColor = SystemColors.Control;
label1.ForeColor = Color.Black;
}
当然一定不要忘记设置控件的AllowDrop
属性,让控件真正变成“DragDrop Aware”。