Vb.net 左修剪路径。GetFileName不带OutExtension
我需要取前5个字符,以便它们与我早些时候用相同名称保存的picturebox相匹配 例如,此文件名可以是12345_Text_Text_Text.pdfVb.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
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提出的观点的解释,您的代码是正确的,我只是解释了它是如何解决问题的。