Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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 如何从列表框中删除项目以及从引用相同字符串的文本文件中删除文本行_Vb.net - Fatal编程技术网

Vb.net 如何从列表框中删除项目以及从引用相同字符串的文本文件中删除文本行

Vb.net 如何从列表框中删除项目以及从引用相同字符串的文本文件中删除文本行,vb.net,Vb.net,如何从列表框中删除一项,然后从文本文件中删除该行,并在Visual Basic.Net中用新数据重新填充列表框 我的来源(显然,您不能让StreamReader和StreamWriter同时访问同一个文件): Private Sub btnDelete\u Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理btnDelete。单击 Dim文件\u名称为String=“C:\TextFile.txt” 如果System.IO.File.Exist

如何从列表框中删除一项,然后从文本文件中删除该行,并在Visual Basic.Net中用新数据重新填充列表框

我的来源(显然,您不能让StreamReader和StreamWriter同时访问同一个文件):

Private Sub btnDelete\u Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理btnDelete。单击
Dim文件\u名称为String=“C:\TextFile.txt”
如果System.IO.File.Exists(File_NAME)=True,则
Dim objReader作为新System.IO.StreamReader(文件名)
当objReader.Peek-1
如果objReader.ReadLine=recordLine,则
lstListBox.Items.RemoveAt(currentRecord)
numberOfRecords-=1
Dim objWriter作为新System.IO.StreamWriter(文件名,False)
对于i=0到numberOfRecords-1
objWriter.WriteLine(lstListBox.Items(i))
接下来我
objWriter.Close()
如果结束
环
lstListBox.Items.Clear()
numberOfRecords=0
当objReader.Peek-1
lstListBox.Items.Add(objReader.ReadLine)
numberOfRecords+=1
环
objReader.Close()
其他的
MsgBox(“未知错误”)
如果结束
端接头

我对VB.Net非常陌生,不使用StreamReader和StreamWriter,只需使用文件访问类型ReadWrite即可。这样,您可以同时读写。

看起来可以假设文本文件与列表框具有相同的行,因为这是此函数之后的结束方式。如果是这种情况,那么您可以从列表框中删除该行,然后使用它来编写文本文件

Dim ss() As String
Dim i As Integer
Dim s As String

For Each s In ListBox1.Items
  If s = recordLine Then
    ListBox1.Items.Remove(s)
    Exit For
  End If
Next s

ReDim ss(ListBox1.Items.Count - 1)
For i = 0 To UBound(ss)
  ss(i) = ListBox1.Items(i)
Next i
System.IO.File.WriteAllLines(FILE_NAME, ss)

如果列表框和文本文件可能不同,则可以使用ReadAllLines加载文本文件,从数组ss中删除该行,然后使用WriteAllLines重写文本文件

我不明白你为什么要同时访问它们。
Dim ss() As String
Dim i As Integer
Dim s As String

For Each s In ListBox1.Items
  If s = recordLine Then
    ListBox1.Items.Remove(s)
    Exit For
  End If
Next s

ReDim ss(ListBox1.Items.Count - 1)
For i = 0 To UBound(ss)
  ss(i) = ListBox1.Items(i)
Next i
System.IO.File.WriteAllLines(FILE_NAME, ss)