vb6.0 listbox读取文本文档txt,让其逐行显示相应的内容,但运行结果txt所有内容在listbox中为何只显示一行
Dim temp As String
Open "WB.txt" For Input As #3
Do While Not EOF(3)
Line Input #3, temp
List1.AddItem temp
Loop
Close #3
Do While Not EOF(FileNo) ' 循环至文件尾。
Line Input #FileNo, tmp ' 读入一行数据并将其赋予某变量。
List1.AddItem tmp ' 在立即窗口中显示数据。
Loop Close
可以借鉴下
Private Sub Command1_Click()
Dim s() As String
s = Split(Text1.Text, vbCrLf)
For i = 0 To UBound(s)
List1.AddItem (s(i))
Next i
End Sub
Private Sub Form_Load()
Text1.Text = "What are you doing?" & vbCrLf & "What is the next?" & vbCrLf & "who r u?"
End Sub
打开文本文档:使用VB6.0的FileOpen函数打开要读取的文本文档,并将其存储在一个字符串变量中。例如:
Dim fileName As String
Dim fileContent As String
fileName = "C:\text.txt"
Open fileName For Input As #1
fileContent = Input(LOF(1), #1)
Close #1
这里的“#1”表示打开的文件句柄,LOF(1)函数用于获取文件长度,Input函数用于读取文件内容并将其存储在fileContent变量中。
分离文本行:使用VB6.0的Split函数将文本文档中的多行文本分离成一个个单独的文本行。例如:
Dim fileLines() As String
fileLines = Split(fileContent, vbCrLf)
这里的“vbCrLf”表示Windows系统中文本换行符,Split函数将文本文档中的多行文本按照换行符分离成一个个单独的文本行,并将其存储在一个字符串数组中。
将文本行添加到Listbox控件中:使用VB6.0的AddItem方法将文本行逐个添加到Listbox控件中。例如:
Dim i As Integer
For i = 0 To UBound(fileLines)
ListBox1.AddItem fileLines(i)
Next i
这里的“UBound”函数用于获取字符串数组的上界,将文本行逐个添加到Listbox控件中。
如果在执行以上操作后只显示了一行文本,可能是Listbox控件的高度或属性设置问题导致的。可以尝试调整Listbox控件的高度或属性设置,或使用其他控件(如Textbox控件)来显示文本内容。
程序没问题,检查
根据你提供的代码,循环读取文本文件中的每一行,然后将每一行的内容添加到List1控件中显示。但是,如果控件只显示一行,就有可能是以下几个方面导致的。
1.控件的高度不够:如果List1控件的高度不够显示所有项,那么只能显示部分内容,这也可能是你看到的现象。你可以尝试增大控件的高度,以便显示更多的内容。
2.数据源格式问题:另一个可能性是数据源的格式问题。例如,如果数据源中使用了非Windows行结束符,则可能会导致Line Input语句仅读取第一行。你可以尝试在打开文件前指定Line Input语句的输入和输出的文本格式,例如:
Option Explicit
Dim sInput As String, i As Integer
Open "WB.txt" For Input As #1
While Not EOF(1)
Line Input #1, sInput
i = i + 1
List1.AddItem sInput
Wend
Close #1
3.数据源中HTML或RTF的格式问题:如果你的数据源包含HTML或RTF格式的文本,则你需要使用适当的控件来正确地显示它们,而不是使用List1控件。因为List1控件只支持纯文本,如果你尝试在其中添加其他格式的文本,那么它只会显示文本的一部分内容,而不是完整的格式化文本。
希望这些信息能够帮助你找到问题所在并解决它。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
在这段代码中,temp变量没有赋值,应该将temp改为tempLine来正确读取每行的内容,并添加到Listbox控件中。
以下是修改后的代码:
Open "WB.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, tempLine
tempList1.AddItem tempLine
Loop
Close #1
这样,文本文档中的每一行都将被逐行添加到Listbox控件中,实现了逐行显示相应的内容。
如果我的回答解决了您的问题,请采纳!
读取文件的同时给文件内容分行增加换行符就行了 ,换行符: \n