主题:为什么运行结果不对呢??
题目要求:窗体上建立一个简单的组合框,在组合框的文本框的文本框输入数字字符,按回车键后加入到组合框的列表框内;单击“交换”按钮,将列表框中最小值项目和第0个项目交换;最大值项目与最后项目交换。
(1)只能输入数字,combo1_keypress事件通过如下代码实现:
select case keyAscii
case 48 to 57,13
case else
keyAscii=0
end select
(2)求最大值和最小值必须声明4个变量:如min,imin,max,imax分别存放最小值和最小值下标、最大值和最大值下标,并将列表框中第0个项目作为上述4个变量的初值。
(3)按照求最大值和最小值的方法,在组合框中找最小值和最大值,并获得最小值和最大值下标,注意比较时项目要用Val函数,否则作为字符串比较。
(4)将组合框的第0项与最小值交换、最大值与最后项交换。例,最大值与最后项交换的代码如下:
t=combo1.list(combo1.listcount-1)
combo1.list(combo1.listcount-1)=combo1.list(imax)
combo1.list(imax)=1
部分代码如下:
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 13 '0-9数字和回车键为合法数据
Case Else '否则为非法字符,去除非法字符
KeyAscii = 0
End Select
End Sub
Private Sub Command1_Click()
Dim min%, max%, imin%, imax%, t%
min = Combo1.List(0): max = Combo1.List(0): imin = 0: imax = 0 '将列表框中的第0个项目复制给上面定义的四个变量
For i = 0 To Combo1.ListCount - 1 '选出最小值
If Val(min) > Val(Combo1.List(i)) Then
min = Combo1.List(i): imin = i
End If
If Val(max) < Val(Combo1.List(i)) Then
max = Combo1.List(i): imax = i
End If
Next i
t = Combo1.List(imin): Combo1.List(imax) = Combo1.List(0): Combo1.List(0) = t '将组合框的第0项和最小项交换
t = Combo1.List(Combo1.ListCount - 1): Combo1.List(Combo1.ListCount - 1) = Combo1.List(imax): Combo1.List(imax) = t '将组合框的最大项与最后一项交换
End Sub
为什么运行后第0项和最小项交换、最大项与最后一项交换的结果无法实现,反而将最小项永无止境的进行了combo1.AddItem操作。请各位大侠指点。
(1)只能输入数字,combo1_keypress事件通过如下代码实现:
select case keyAscii
case 48 to 57,13
case else
keyAscii=0
end select
(2)求最大值和最小值必须声明4个变量:如min,imin,max,imax分别存放最小值和最小值下标、最大值和最大值下标,并将列表框中第0个项目作为上述4个变量的初值。
(3)按照求最大值和最小值的方法,在组合框中找最小值和最大值,并获得最小值和最大值下标,注意比较时项目要用Val函数,否则作为字符串比较。
(4)将组合框的第0项与最小值交换、最大值与最后项交换。例,最大值与最后项交换的代码如下:
t=combo1.list(combo1.listcount-1)
combo1.list(combo1.listcount-1)=combo1.list(imax)
combo1.list(imax)=1
部分代码如下:
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 13 '0-9数字和回车键为合法数据
Case Else '否则为非法字符,去除非法字符
KeyAscii = 0
End Select
End Sub
Private Sub Command1_Click()
Dim min%, max%, imin%, imax%, t%
min = Combo1.List(0): max = Combo1.List(0): imin = 0: imax = 0 '将列表框中的第0个项目复制给上面定义的四个变量
For i = 0 To Combo1.ListCount - 1 '选出最小值
If Val(min) > Val(Combo1.List(i)) Then
min = Combo1.List(i): imin = i
End If
If Val(max) < Val(Combo1.List(i)) Then
max = Combo1.List(i): imax = i
End If
Next i
t = Combo1.List(imin): Combo1.List(imax) = Combo1.List(0): Combo1.List(0) = t '将组合框的第0项和最小项交换
t = Combo1.List(Combo1.ListCount - 1): Combo1.List(Combo1.ListCount - 1) = Combo1.List(imax): Combo1.List(imax) = t '将组合框的最大项与最后一项交换
End Sub
为什么运行后第0项和最小项交换、最大项与最后一项交换的结果无法实现,反而将最小项永无止境的进行了combo1.AddItem操作。请各位大侠指点。