Noi*_*ves 15 c# wpf drag-and-drop .net-3.5
是否有可能让WPF窗口/元素检测从C#.Net 3.5中的Windows资源管理器拖拽文件?我找到了WinForms的解决方案,但没有找到WPF的解决方案.
小智 8
请尝试以下方法:
private void MessageTextBox_Drop(object sender, DragEventArgs e)
{
if (e.Data is DataObject && ((DataObject)e.Data).ContainsFileDropList())
{
foreach (string filePath in ((DataObject)e.Data).GetFileDropList())
{
// Processing here
}
}
}
private void MessageTextBox_PreviewDragEnter(object sender, DragEventArgs e)
{
var dropPossible = e.Data != null && ((DataObject)e.Data).ContainsFileDropList();
if (dropPossible)
{
e.Effects = DragDropEffects.Copy;
}
}
private void MessageTextBox_PreviewDragOver(object sender, DragEventArgs e)
{
e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,TextBox,RichTextBox和FlowDocument查看器始终将拖放事件标记为已处理,这可防止它们冒泡到处理程序.您可以通过强制处理拖放事件(使用UIElement.AddHandler并将processedEventsToo设置为true)并在处理程序中将e.Handled设置为false来恢复这些控件拦截的拖放事件.