回 帖 发 新 帖 刷新版面

主题:为什么运行结果不对呢??

题目要求:窗体上建立一个简单的组合框,在组合框的文本框的文本框输入数字字符,按回车键后加入到组合框的列表框内;单击“交换”按钮,将列表框中最小值项目和第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操作。请各位大侠指点。

回复列表 (共3个回复)

沙发

Dim min%, max%, imin%, imax%, t%
min = Combo1.List(0): max = Combo1.List(Combo1.ListCount - 1)
For i = 0 To Combo1.ListCount - 1    '选出最小值
  If min > Val(Combo1.List(i)) Then min = Combo1.List(i): imin = i
  If max < Val(Combo1.List(i)) Then max = Combo1.List(i): imax = i
Next i
t = Combo1.List(0): Combo1.List(0) = Combo1.List(imin): Combo1.List(imin) = t '将组合框的第0项和最小项交换
t = Combo1.List(Combo1.ListCount - 1): Combo1.List(Combo1.ListCount - 1) = Combo1.List(imax): Combo1.List(imax) = t '将组合框的最大项与最后一项交换

板凳


那如何将组合框的文本框中的数字在按回车后加入到组合框的列表框中呢?

3 楼

Select Case KeyAscii
    Case 13: Combo1.AddItem Combo1.Text
    Case 48 To 57    '0-9数字和回车键为合法数据
    Case Else           '否则为非法字符,去除非法字符
      KeyAscii = 0
      End Select


我来回复

您尚未登录,请登录后再回复。点此登录或注册