Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 左修剪路径。GetFileName不带OutExtension_Vb.net_String_Visual Studio 2010 - Fatal编程技术网

Vb.net 左修剪路径。GetFileName不带OutExtension

Vb.net 左修剪路径。GetFileName不带OutExtension,vb.net,string,visual-studio-2010,Vb.net,String,Visual Studio 2010,我需要取前5个字符,以便它们与我早些时候用相同名称保存的picturebox相匹配 例如,此文件名可以是12345_Text_Text_Text.pdf Dim key As String = Path.GetFileNameWithoutExtension(e.Name) Dim p As PictureBox = CType(Me.Controls(key), PictureBox) p.Image = My.Resources.Ok 我以为这样做会奏效 Dim subkey As Str

我需要取前5个字符,以便它们与我早些时候用相同名称保存的picturebox相匹配

例如,此文件名可以是12345_Text_Text_Text.pdf

Dim key As String = Path.GetFileNameWithoutExtension(e.Name)
Dim p As PictureBox = CType(Me.Controls(key), PictureBox)
p.Image = My.Resources.Ok
我以为这样做会奏效

Dim subkey As String
Dim key As String = Path.GetFileNameWithoutExtension(e.Name)
subkey = Left(key, 5)
问题似乎在于
Left
命令,
Public Property Left As Integer'没有参数,其返回类型无法索引。

这里是完整的子程序

    Private Sub Watcher_Changed(ByVal sender As Object, ByVal e As FileSystemEventArgs) Handles Watcher.Changed

    Dim key As String = Path.GetFileNameWithoutExtension(e.Name)

    Dim subkey As String
    subkey = Left(key, 5)

    Dim p As PictureBox = CType(Me.Controls(key), PictureBox)
    p.Image = My.Resources.Ok

    End Sub

关于我做错了什么的建议?

将您的呼叫更改为以下内容:

subkey = Strings.Left(key,5);
Left是一个附加到Strings对象实例的静态方法,所以您的问题只是表示法(独立的Left引用)的问题之一

希望这有助于解决问题

编辑以进行澄清/演示:

正如下面@SSS所指出的,WinForms项目中的表单有一个Left属性,它定义了表单在屏幕上的水平位置。当“Left”方法在没有限定条件的情况下被调用时,例如前面没有对象或名称空间引用,VB就进入其解析过程来确定如何解释它。表单的本机“Left”属性是“winner”,但使用提供的参数会导致您收到错误

要解决这样的名称冲突,解决方案是提供对所讨论的方法或属性的完全限定引用。提供“Microsoft.VisualBasic.Left”是解决这一问题的一种非常有效的方法,正如这里提到的提供对Strings类的引用一样

我希望这有助于澄清任何困惑

由于此建议的修复可能存在一些小的不确定性或混乱,以下是测试项目中使用的一些屏幕截图:


在VB.NET中使用字符串的示例代码



示例代码的结果将您的呼叫更改为以下内容:

subkey = Strings.Left(key,5);
Left是一个附加到Strings对象实例的静态方法,所以您的问题只是表示法(独立的Left引用)的问题之一

希望这有助于解决问题

编辑以进行澄清/演示:

正如下面@SSS所指出的,WinForms项目中的表单有一个Left属性,它定义了表单在屏幕上的水平位置。当“Left”方法在没有限定条件的情况下被调用时,例如前面没有对象或名称空间引用,VB就进入其解析过程来确定如何解释它。表单的本机“Left”属性是“winner”,但使用提供的参数会导致您收到错误

要解决这样的名称冲突,解决方案是提供对所讨论的方法或属性的完全限定引用。提供“Microsoft.VisualBasic.Left”是解决这一问题的一种非常有效的方法,正如这里提到的提供对Strings类的引用一样

我希望这有助于澄清任何困惑

由于此建议的修复可能存在一些小的不确定性或混乱,以下是测试项目中使用的一些屏幕截图:


在VB.NET中使用字符串的示例代码



示例代码的结果如下所示:


subkey=Microsoft.VisualBasic.Left(键,6)

以下内容最终对我有效:


subkey=Microsoft.VisualBasic.Left(键,6)

“所以我遇到了问题”似乎有什么问题?“所以我遇到了问题”似乎有什么问题?Windows窗体有一个.Left属性,优先于VisualBasic.Left函数。所以你是说我发布的内容不正确?但是上面贴的内容不起作用。有关@SSS.Muhnamana提出的观点的更多解释,请参见上面的修订答案,您的代码是正确的,我刚才解释了它是如何解决这个问题的。Windows窗体有一个.Left属性,它优先于VisualBasic.Left函数。所以你是说我发布的内容不正确?但是上面贴出的内容不起作用。请参阅上面的修订答案,以获取更多关于@SSS.Muhnamana提出的观点的解释,您的代码是正确的,我只是解释了它是如何解决问题的。