vb.net 应用程序可处理拖到 exe 上的文件,但如果文件路径中有空格,则会崩溃

标签 vb.net visual-studio-2010 path drag-and-drop

我正在 vb.net 中开发一个应用程序。您将任何类型的文件拖到 exe 上,就会弹出一个窗口,其中包含该文件的一些选项,然后它将文件保存到不同的位置,执行一些 SQL 魔法等。它在大多数情况下都非常有效。

我发现的唯一问题是,如果文件的路径包含任何空格,应用程序将立即崩溃并显示错误窗口:/image/mVamO.png

我正在使用: 私有(private)文件名为 String = Command$ 它位于我的表单的类声明中,而不是在子/函数中。 如果没有这一行,我的程序可以正常运行(尽管无用,无需访问文件)。 我也尝试过(我想就是这样,我现在没有代码): 私有(private)文件名为 String = Environment.CommandLine 它也有同样的问题。

那么,在vb.net中,有没有办法将文件拖到exe上并使用该路径名,即使路径名中有空格?

最佳答案

如果拖动文件的路径包含空格,Windows 将在传递的命令行参数两边加上双引号。问题是,您使用古老的 VB6 方式来检索参数,您会看到双引号。 .NET 则反对,双引号在路径名中无效。使用这个:

        Dim path = Command$.Replace("""", "")

或者 .NET 方式:

Sub Main(ByVal args() As String)
    If args.Length > 0 then
        Dim path = args(0)
        MsgBox(path)
        '' do something with it..
    End If
End Sub

关于vb.net 应用程序可处理拖到 exe 上的文件,但如果文件路径中有空格,则会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6365489/

相关文章:

.net - 正确处理 dbnull 值

asp.net-mvc - 如何在新的 Asp.Net MVC 3 项目对话框中添加自定义项目模板?

javascript - JS中如何将矩形移动到x,y坐标

c# - Visual Studio 2010 项目转换为 Visual Studio 2012

java - 如何在 lambda 函数中传递多个 get 参数?

c - Pocketsphinx - 使用 Makefile 链接/包含库的正确方法是什么?

vb.net - := syntax?的用途是什么

Javascript 调用 VB 回发函数导致意外的调用错误

.net - RichTextBox 不显示 ' 并显示一个菱形,而不是里面有一个问号

visual-studio-2010 - Visual Studio 2010 中的 Distinct Find in Files 搜索结果