Vb.net 阻止拖放操作

Vb.net 阻止拖放操作,vb.net,drag-and-drop,Vb.net,Drag And Drop,在vb.net中,如果满足以下条件,如何阻止拖放操作: 1) 如果用户拖动文件夹 2) 如果用户拖动的文件不是Excel文件或Word文件 3) 如果用户拖动多个文件 谢谢大家! 亚历克斯 您试图在一个只需要很少代码的例程中完成很多工作。拖动事件应该很快返回,以便UI可以继续渲染,并且UI保持响应。如果您让它承担复杂的文件检查工作,则会隐藏其响应能力,并导致非常糟糕的情况 在UI崩溃的情况下,应该由您通过错误处理来处理。用户界面不起作用的事实意味着你没有正确处理这种情况 最好的方法是通过文件扩展

在vb.net中,如果满足以下条件,如何阻止拖放操作:

1) 如果用户拖动文件夹

2) 如果用户拖动的文件不是Excel文件或Word文件

3) 如果用户拖动多个文件

谢谢大家!

亚历克斯

您试图在一个只需要很少代码的例程中完成很多工作。拖动事件应该很快返回,以便UI可以继续渲染,并且UI保持响应。如果您让它承担复杂的文件检查工作,则会隐藏其响应能力,并导致非常糟糕的情况

在UI崩溃的情况下,应该由您通过错误处理来处理。用户界面不起作用的事实意味着你没有正确处理这种情况

最好的方法是通过文件扩展名、单个文件,而不是文件夹和文件大小(例如,意味着文件大小小于4MB)来约束用户。那么您的代码应该假定文件是有效的。然后将该文件传递到Excel(或下一个进程的内容),并让该进程引发异常。然后处理该异常,并向用户显示有意义的错误信息,如:“该文件不是有效的Excel电子表格。”


请理解,我们试图帮助您实施最佳实践,而不是首选实践;在大多数情况下,哪种情况会使您的产品无法使用或不稳定

编写DragEnter事件处理程序。如果数组包含多个元素或文件扩展名不是.doc、.docx、.xls或.xlsx,您会不高兴。谢谢,但是如果文件是Excel文件,但没有扩展名,该怎么办?我也需要报道这个案子,允许拖拽。不,你不必报道那个案子。这在技术上是可能的,但在DragEnter事件处理程序中启动Excel只是为了检查它是否是有效的电子表格,这是完全不现实的。DragEnter需要很快才能使用,但我需要解决这个问题。因为如果上面描述的所有检测都正常,我必须在拖放操作中做一些事情。为了使我的应用程序不会失败,我必须确保拖放的文件是真正的Excel文件。想象一下,如果用户拖动一个扩展名为.xls但不是excel文件的文件。根据您的解决方案,DragEnter中的所有检测结果都正常,但在我的应用程序失败后,因为扩展名为.xls的文件不是真正的Excel文件。DragDrop事件处理程序将引发异常。这不是问题,你的应用不会失败。你真的试过这个吗,还是你只是假设你会有问题?试试看。