You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环将ListView全部数据依次显示到TextBox中?

解决TextBox显示ListView全部数据的问题

你当前的循环每次直接覆盖TextBox1.Text的值,所以循环结束后只会保留最后一条数据。要实现显示全部数据,需要拼接所有项的内容,而不是每次覆盖,以下是具体实现方案:

基础实现方案(数据量小场景)

直接通过字符串拼接追加内容,用换行符分隔每条数据:

' 先清空文本框原有内容
TextBox1.Text = ""
For i = 0 To ListView1.Items.Count - 1
    ' 用Environment.NewLine实现换行,也可替换为逗号、空格等分隔符
    TextBox1.Text &= ListView1.Items(i).SubItems(0).Text & Environment.NewLine
Next

高效实现方案(数据量大场景)

使用StringBuilder进行拼接,性能更优:

' 需先导入命名空间:Imports System.Text
Dim sb As New StringBuilder()
For i = 0 To ListView1.Items.Count - 1
    sb.AppendLine(ListView1.Items(i).SubItems(0).Text)
Next
TextBox1.Text = sb.ToString()

额外优化:修复SQL注入风险

你原代码中直接拼接用户输入到SQL语句的方式存在SQL注入风险,建议改为参数化查询:

' 替换原查询代码
Dim query As String = "select ID from studentdata where Class=@Class"
Dim Command = New SqlCommand(query, Mysqlconn)
Command.Parameters.AddWithValue("@Class", ComboBox1.Text)

完整优化后代码

Imports System.Text
Imports System.Data.SqlClient ' 确保导入此命名空间

' 使用Using语句自动释放数据库连接资源
Using Mysqlconn = New SqlConnection("Data Source=DESKTOP-D32ONKB;Initial Catalog=Attendance;Integrated Security=True")
    Mysqlconn.Open()

    ' 参数化查询避免SQL注入
    Dim query As String = "select ID from studentdata where Class=@Class"
    Dim Command = New SqlCommand(query, Mysqlconn)
    Command.Parameters.AddWithValue("@Class", ComboBox1.Text)

    Dim dr = Command.ExecuteReader(CommandBehavior.CloseConnection)

    ListView1.Items.Clear()
    Dim x As ListViewItem

    Do While dr.Read = True
        x = New ListViewItem(dr("ID").ToString)
        ListView1.Items.Add(x)
    Loop

    ' 拼接所有ID到TextBox
    Dim sb As New StringBuilder()
    For i = 0 To ListView1.Items.Count - 1
        sb.AppendLine(ListView1.Items(i).SubItems(0).Text)
    Next
    TextBox1.Text = sb.ToString()
End Using

内容的提问来源于stack exchange,提问作者methu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:25:16