vb连接lst文件,文本框1和2输入数据,点击添加 显示在下方list1和combo1里,点击保存添加数据在文件里。下次运行程序时,程序自动读取文件内容,结果下拉框里的是全部的数据了
我想要的是下拉框只显示前面我输入的格式名abc,并且如何让下拉框选中的格式名跟其码率相对应(比如选了格式abc,如何让它对应123?因为下方还要计算)
求大佬

解决方案 »

  1.   

    就算用文本文件保存这些“记录信息”,你好歹也得保证“规范格式”吧!!!看看你的“记录”,有些有“格式名”和“码率”这两个“关键字”,
     (也不好安其称谓,暂且叫做“关键字”吧 ^_^)
    有一些却只有个“格式名称”而没有任何关键字、也没有码率信息(当然这也不算什么问题)。你觉得这样记录的信息,在记取文件数据时,能够便于处理吗!本来是个非常简单的事,却因为你记得的“乱”而变得难以处理了。
    稍说“具体”点,就是:
    要么你把所有的记录项(就是“每行文本”),统一的分别冠以“格式名”和“码率”;
    要么就都不要这“关键字”,把格式名和码率信息用一个“特定字符”来分隔开,
     比如用西文的分号(假设格式名中不会出现“分号”字符)、逗号(假设……同前)等。
    格式名中会出现的字符,这种“不冠关键字”的情况下就不能作为“分隔符”了,
     比如西文的空格,你的格式名“Half D1”中就有它,显然不能用它做分隔符了。
    在“格式规范”后,解决你的“问题”就简单了;
    并且“只有格式名、没有码率”的记录,也不是个“问题”了。
      

  2.   

    如果你的 List.lst 是“用空格分隔”的,参考一下这段代码。
    如果有问题再说吧…………Option ExplicitPrivate arrData() As String
    Private mlMaxSN   As LongPrivate Sub LoadList()
       Dim strTemp As String
       Dim i&, k   As Long   strTemp = App.Path & "\List.lst"
       Open strTemp For Input As #1
       k = LOF(1)
       strTemp = StrConv(InputB$(k, #1), vbUnicode)
       Close
       arrData = Split(strTemp, vbCrLf)
       For i = 0& To UBound(arrData())
          strTemp = arrData(i)
          k = InStr(strTemp, " ")
          If (0 = k) Then Exit For
          Me.Combo1.AddItem Left$(strTemp, k - 1)
          arrData(i) = Mid$(strTemp, k + 1)
       Next
       mlMaxSN = i - 1
    End SubPrivate Sub Combo1_Click()
       Dim i As Long   i = Combo1.ListIndex - 5   ' Combo1中的“标准格式”有5项
       If (0 > i) Then
          Text2.Text = ""
       Else
          If (i > mlMaxSN) Then
             Text2.Text = ""
          Else
             Text2.Text = arrData(i)
          End If
       End If
    End SubPrivate Sub Form_Load()
       ' 先做你的其它处理…………
       
       Call LoadList
    End Sub