题目来源:大工慕课 链接
原题:Visual Basic程序设计教程(第二版)龚沛曾主编,高等教育出版社 实验5-8
作者:Caleb Sung
题目要求
窗体上建立一个简单组合框,在组合框的文本框输入数字字符,按回车键后加入到组合框的列表框内,如图E.8所示;单击“交换”按钮,将列表框中最小值项目和第0个项目交换;最大值与最后项目交换,如图所示:
提示
- 只能输入数字,Combo1_KeyPress事件通过如下代码实现:
Select Case KeyAscii
Case 48 to 57,13 '0~9数字和回车键为合法数据
Case Else '否则为非法数据,去除非法字符
KeyAscii=0
End Select
- 求最大值和最小值必须声明4个变量:如Min、iMin、Max、iMax分别存放最小值、最小值下标、最大值和最大值下标,并将列表框中低0个项目作为上述4个变量的初值。
- 按照求最大值和最小值的方法,在组合框中找最小值和最大值,并获得最小值和最大值下标;注意比较时要用Val函数,否则作为字符串比较。
- 将组合框的第0项与最小值交换、最大值与最后项交换。例,最大值与最后项交换的代码如下:
t=Combo1.List(Combo1.ListCount-1)
Combo1.List(Combo1.ListCount-1)= Combo1.List(iMax)
Combo1.List(iMax)= t
参考解答
首先画一个高度较高的ComboBox,它的按钮长这个样子:
随后选中画好的ComboBox,在属性面板里找到Style属性,设置为“1 - Simple Combo”:
接下来画一个Button,就可以愉快的Coding了 (>^ω^<)
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 13
Case Else
KeyAscii = 0
End Select
If KeyAscii = 13 Then
Combo1.AddItem Combo1.Text
Combo1.Text = ""
End If
End Sub
Private Sub Command1_Click()
Max = Val(Combo1.List(0))
iMax = 0
Min = Val(Combo1.List(0))
iMin = 0
For i = 1 To Combo1.ListCount - 1
If Val(Combo1.List(i)) > Max Then
Max = Val(Combo1.List(i))
iMax = i
ElseIf Val(Combo1.List(i)) < Min Then
Min = Val(Combo1.List(i))
iMin = i
End If
Next i
t = Combo1.List(Combo1.ListCount - 1)
Combo1.List(Combo1.ListCount - 1) = Combo1.List(iMax)
Combo1.List(iMax) = t
t = Combo1.List(0)
Combo1.List(0) = Combo1.List(iMin)
Combo1.List(iMin) = t
End Sub