You need to enable JavaScript to run this app. Visual Studio(VB优先)实现CSV驱动双combo box联动查询展示功能
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio(VB优先)实现CSV驱动双combo box联动查询展示功能

基于Visual Studio的VB参赛人员信息联动查询实现

本次开发基于Visual Studio环境,优先采用VB代码实现相关功能,功能实现要求如下:

  • 程序启动阶段完成CSV文件数据读取,完成两个组合框(ComboBox)的选项填充
  • 实现组合框联动:选中*组别(Section)*组合框的取值后,*参赛编号(Competitor Number)*组合框仅展示对应组别下的可选参赛编号
  • 结合两个组合框的选中取值,展示对应的参赛人员姓名,切换组合框选项时姓名同步更新

核心实现代码

1. 全局数据结构定义

首先在窗体代码头部定义数据存储结构和全局列表,用于存储读取到的所有参赛人员信息:

Imports System.IO
Imports System.Text

Public Class MainForm
    ' 定义参赛人员信息结构
    Structure CompetitorInfo
        Public Section As String
        Public CompNumber As String
        Public Name As String
    End Structure
    ' 全局存储所有参赛人员数据
    Dim allCompetitors As New List(Of CompetitorInfo)

2. 启动阶段CSV读取与初始下拉框填充

在窗体加载事件中完成CSV数据读取和组别下拉框的初始化填充:

Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' 替换为实际CSV文件存储路径
        Dim csvFilePath As String = "D:\competitors.csv"
        ' 读取CSV所有行数据
        Dim csvRows As String() = File.ReadAllLines(csvFilePath, Encoding.Default)

        For Each row In csvRows
            Dim fieldArr As String() = row.Split(",")
            ' 仅处理列数符合要求的有效行
            If fieldArr.Length >= 3 Then
                allCompetitors.Add(New CompetitorInfo With {
                    .Section = fieldArr(0).Trim(),
                    .CompNumber = fieldArr(1).Trim(),
                    .Name = fieldArr(2).Trim()
                })
            End If
        Next

        ' 给组别下拉框填充去重后的组别值
        cboSection.DataSource = allCompetitors.Select(Function(c) c.Section).Distinct().ToList()
    End Sub

3. 组合框联动逻辑

在组别下拉框的选中值变更事件中,过滤对应组别下的参赛编号填充到第二个下拉框:

Private Sub cboSection_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSection.SelectedIndexChanged
        ' 无选中值时直接退出
        If cboSection.SelectedItem Is Nothing Then
            cboCompNumber.DataSource = Nothing
            lblShowName.Text = String.Empty
            Exit Sub
        End If

        Dim currentSection As String = cboSection.SelectedItem.ToString()
        ' 过滤当前组别下的所有参赛编号,去重后填充
        Dim validNumbers = allCompetitors.Where(Function(c) c.Section = currentSection).Select(Function(c) c.CompNumber).Distinct().ToList()
        cboCompNumber.DataSource = validNumbers
    End Sub

4. 参赛人员姓名同步展示

在参赛编号下拉框的选中值变更事件中,匹配对应人员姓名并展示:

Private Sub cboCompNumber_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboCompNumber.SelectedIndexChanged
        If cboSection.SelectedItem Is Nothing OrElse cboCompNumber.SelectedItem Is Nothing Then
            lblShowName.Text = String.Empty
            Exit Sub
        End If

        Dim currentSection As String = cboSection.SelectedItem.ToString()
        Dim currentNumber As String = cboCompNumber.SelectedItem.ToString()
        ' 匹配对应参赛人员信息
        Dim targetPerson = allCompetitors.FirstOrDefault(Function(c) c.Section = currentSection AndAlso c.CompNumber = currentNumber)

        lblShowName.Text = If(String.IsNullOrEmpty(targetPerson.Name), "未查询到对应人员信息", targetPerson.Name)
    End Sub
End Class

注意说明

  • 示例代码中控件命名约定:组别组合框为cboSection、参赛编号组合框为cboCompNumber、姓名展示标签为lblShowName,可根据实际界面控件命名调整
  • CSV文件默认列顺序为「组别,参赛编号,姓名」,如果实际CSV列顺序不同,可调整fieldArr的索引取值
  • 可根据需求新增CSV格式校验、空值处理等额外逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 13:45:04