vb.net高手帮忙看一下这个从listbox中截取字符串的代码哪里不对
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb.net高手帮忙看一下这个从listbox中截取字符串的代码哪里不对相关的知识,希望对你有一定的参考价值。
已经用FolderBrowserDialog将一个目录下的所有文件都添加到了listbox中,但是每个文件还都带着文件夹路径以及盘符。为了去掉文件夹名,只留文件名,我这样子:
Dim s As String
Dim i As Integer
ListBox1.SelectedIndex=0
For i=1 To ListBox1.Items.Count
i=i+1
ListBox1.SelectedIndex=Listbox1.SelectedIndex+1
s=ListBox1.Items(ListBox1.SelectedIndex)
ListBox1.Items.Add(Mid(s,Len(FolderBrowserDialoa1.SelectedPath+1)))'Len后面就是导入文件路径时的文件夹字符数和一个"\"
ListBox1.Items.Remove(s)'用截取的字符串代替原来的字符串
但是运行之后发现只有后面大概1/5的成功去掉文件夹名,其余都是原样,并且第一项和最后一项变成空白。是哪里出错了?怎么改嘞?如果有更好的方法,请不吝赐教!
第一种方法:
'读取D:\Temp目录下所有文件完整路径名称
Dim pathArray As String() = IO.Directory.GetFiles("D:\Temp")
'历遍文件完整路径
For Each path As String In pathArray
'获取完整路径下的文件名称,添加到ListBox1
ListBox1.Items.Add(IO.Path.GetFileName(path))
Next
第二种方法:
'读取D:\Temp目录下所有文件完整路径名称
Dim pathArray As String() = IO.Directory.GetFiles("D:\Temp")
'历遍文件完整路径
For Each path As String In pathArray
'根据文件完整路径新建FileInfo文件信息对象
Dim info As New IO.FileInfo(path)
'获取文件名称,添加到ListBox1
ListBox1.Items.Add(info.Name)
Next
第三种方法:
'读取D:\Temp目录下所有文件完整路径名称
Dim pathArray As String() = IO.Directory.GetFiles("D:\Temp")
'历遍文件完整路径
For Each path As String In pathArray
'根据文件完整路径新建DirectoryInfo目录信息对象
Dim info As New IO.DirectoryInfo(path)
'获取文件名称,添加到ListBox1
ListBox1.Items.Add(info.Name)
Next
普通应用,第一种就可以。
用FolderBrowserDialog操作的话,把"D:\Temp"换成 FolderBrowserDialog.SelectedPath追问
谢谢谢谢,不过经过我无数次的调试,我用Mid函数也成功了。你的方法很简洁,还是改用你的吧。
参考技术A vb.net截取一段路径中的文件名的话直接用这个函数即可My.Computer.FileSystem.GetFileName(path)
其中path就是完整的路径。
例如:Dim myStr As String = My.Computer.FileSystem.GetFileName("C:\1.vb")
那么 myStr 就是 1.vb。
不要用Mid什么的了,太麻烦还容易出错。追问
我添加文件的方法是ListBox1.Items.AddRange(IO.Directory.GetFiles(FolderBrowserDialog1.SelectPath))用你的方法怎么改?
追答把 IO.Directory.GetFiles(FolderBrowserDialog1.SelectPath).ToString 当作参数传进去呀
参考技术B 你的mid函数用错了,用left函数,用Microsoft.VisualBasic.Left引用。同时i要从0开始计数,listbox的index是从0开始的,最后你的ListBox1.Items.Count要减一,所以你的第一个和最后一个有问题。VB 中如何点一下按钮,让listbox中选中的某一列复制到另外的listbox中,不是vb.net
类似这样,选中左边,然后点按钮,到右边
你说的一列是指一行(或者说一项)吗?Private Sub Command1_Click()
If List1.ListIndex > -1 Then List2.AddItem List1.Text
End Sub
以上是把List1选中的一项复制到List2中追问
为什么我试了下,list2中不显示呢
追答首先,窗体中List1、List2、Command1这三个控件缺一不可,而且List1必须有选项,List2可以空白。
其次,要先在List1用鼠标左键点中一项(蓝底白字),再点Command1。
如果这样List2还没有显示,我删帐号……
为什么不能,就是用鼠标选中啊,
就是把1,复制到右边
你怎么列与行都分不清?
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
If List1.Selected(i) Then
List2.AddItem List1.List(i)
Exit For
End If
Next i
End Sub
为什么list2中不显示,我就纳闷了
以上是关于vb.net高手帮忙看一下这个从listbox中截取字符串的代码哪里不对的主要内容,如果未能解决你的问题,请参考以下文章