vb中如何给listbox(列表框)添加编号

2024-11-25 09:44:17
推荐回答(3个)
回答1:

由于list是但列数据表格,所以你的要求其实用grid之类的是最容易实现的。用list也可以实现,但需要用代码软实现。
在窗体上添加1个ListBox,1个TextBOX,3个CommandButton控件。把ListBox的Sorted属性改为True。该属性为让ListBox控件可以自动按字母排序。由于Sorted属性,所以要把序号用00占位,否则排序结果将为
1、10、100、11、12……

然后粘贴如下代码:
Private Sub Command1_Click()
On Error Resume Next
'添加一个新信息
Me.List1.AddItem Right("00" & Me.List1.ListCount + 1, 3) & " " & Me.Text1.Text

'如果要插入在数据中则使用以下代码,但需要再建立一个text来写插入的序号,即将Tmp替换成新text的值
'Dim Tmp As Integer
'Tmp = 10

'Tmp-1是将序号10变成列表里的第9行,因为list是从0开始的.
'Me.List1.AddItem Right("00" & Tmp, 3) & " " & Me.Text1.Text, Tmp - 1

'For i = Tmp To Me.List1.ListCount - 1
' DoEvents
' Me.List1.List(i) = Right("00" & i + 1, 3) & " " & Right(Me.List1.List(i), Len(Me.List1.List(i)) - InStr(Me.List1.List(i), " ") - 2)
'Next
'将最后一列数据变更为最大的数字
'Me.List1.List(Me.List1.ListCount - 1) = Right("00" & Me.List1.ListCount, 3) & " " & Right(Me.List1.List(Me.List1.ListCount - 1), Len(Me.List1.List(Me.List1.ListCount - 1)) - InStr(Me.List1.List(Me.List1.ListCount - 1), " ") - 2)
End Sub

Private Sub Command2_Click()
On Error Resume Next
'修改信息
Me.List1.List(Me.Text1.Tag) = Right("00" & Me.Text1.Tag + 1, 3) & " " & Me.Text1.Text
End Sub

Private Sub Command3_Click()
On Error Resume Next
'删除信息
For i = CInt(Me.Text1.Tag) To Me.List1.ListCount - 1
DoEvents
Me.List1.List(i) = Right("00" & i + 1, 3) & " " & Right(Me.List1.List(i + 1), Len(Me.List1.List(i + 1)) - InStr(Me.List1.List(i + 1), " ") - 2)
Next
'删除最后一条数据
Me.List1.RemoveItem (Me.List1.ListCount - 1)
'由于是用list做序号,所以无法再使用RemoveItem方法
'Me.List1.RemoveItem (Me.Text1.Tag)
End Sub

Private Sub Form_Load()
'这个地方如果是1000,就要将 Right("00" & i, 3) 修改成 Right("000" & i, 4)
'最大数是多少就要修改下

For i = 1 To 100
Me.List1.AddItem Right("00" & i, 3) & " XXX" & i
Next

Me.Command1.Caption = "添加"
Me.Command2.Caption = "修改"
Me.Command3.Caption = "删除"

End Sub

Private Sub List1_Click()
'将列表里的信息去掉序号后显示在文本中
Me.Text1.Text = Right(Me.List1.Text, Len(Me.List1.Text) - InStr(Me.List1.Text, " ") - 2)
'将序列号保存在Text的Tag属性中
Me.Text1.Tag = Me.List1.ListIndex
End Sub

回答2:

Dim a()

Private Sub Command1_Click()
ReDim a(List1.ListCount - 1)
For i = 0 To List1.ListCount - 1
a(i) = List1.List(i)
List1.List(i) = i + 1 & "号 " & a(i)
Next i
End Sub
我也是很笨的哦 我想了很久才想出来 嘻嘻

回答3:

Dim i As Integer
For i = 1 To dataCount 'dataCount为数据总个数
listbox.AddItem i
Next i