Public Sub TabStrip1_Click()
    Dim J As Integer
    Dim k As Integer
    Dim I As Integer
    Dim PO_Z As Long
    Dim temp As Long
    Dim AX, AY As Integer
    Dim P2_buff() As Byte
    ReDim P2_buff(0 To (XP_W + 1) * (XP_H + 1) * 3 - 1)
    Dim TEMP_BUFF() As Byte
    ReDim TEMP_BUFF(0 To (BMP_BUFF_DX))
    Dim TEMP_XXS_XBSB As Integer '需显示细胞下标
    For I = 0 To MAX_XS_GS - 1
        Picture2(I).Visible = False
    Next
    If TabStrip1.SelectedItem.Index <> LastIndex Then
        txtpage.Text = 1
    End If
    LastIndex = TabStrip1.SelectedItem.Index
    Select Case TabStrip1.SelectedItem.Index
        Case 1 '中性
            If Val(txtpage.Text) > (Val(Text1(1).Text) - 1) / MAX_XS_GS + 1 Then txtpage.Text = Val(txtpage.Text) - 1
            For I = 0 To MAX_XS_GS - 1
            '按图号NucCount将该图的数据放入buff
                TEMP_XXS_XBSB = I + (CInt(txtpage.Text) - 1) * MAX_XS_GS
                If I < CInt(Text1(1).Text) - (CInt(txtpage.Text) - 1) * MAX_XS_GS Then
                    If I > 0 Then
                        If XB_L_1(TEMP_XXS_XBSB).NucCount <> XB_L_1(TEMP_XXS_XBSB - 1).NucCount Then
                            GET_XBMP_buff TEMP_BUFF, XB_L_1(TEMP_XXS_XBSB).NucCount
                        End If
                    End If
                    If I = 0 Then
                        GET_XBMP_buff TEMP_BUFF, XB_L_1(TEMP_XXS_XBSB).NucCount
                    End If
                    BMP_JQ TEMP_BUFF, BMP_WIDTH, BMP_HEIGHT, P2_buff, XP_W + 1, XP_H + 1, XB_L_1(TEMP_XXS_XBSB).X, XB_L_1(TEMP_XXS_XBSB).Y
                    'XS_XBMP_2 P2_buff, I
                    XS_SB_XBMP P2_buff, I, 2
                    Picture2(I).Visible = True
                Else
                    Picture2(I).Visible = False
                End If
            Next I
        Case 2 '淋巴
            If Val(txtpage.Text) > (Val(Text1(2).Text) - 1) / MAX_XS_GS + 1 Then txtpage.Text = Val(txtpage.Text) - 1
            For I = 0 To MAX_XS_GS - 1
                TEMP_XXS_XBSB = I + (CInt(txtpage.Text) - 1) * MAX_XS_GS
                If I < CInt(Text1(2).Text) - (CInt(txtpage.Text) - 1) * MAX_XS_GS Then
                '按图号NucCount将该图的数据放入buff
                    If I > 0 Then
                        If XB_L_2(TEMP_XXS_XBSB).NucCount <> XB_L_2(TEMP_XXS_XBSB - 1).NucCount Then
                            GET_XBMP_buff TEMP_BUFF, XB_L_2(TEMP_XXS_XBSB).NucCount
                        End If
                    End If
                    If I = 0 Then
                        GET_XBMP_buff TEMP_BUFF, XB_L_2(TEMP_XXS_XBSB).NucCount
                    End If
                    BMP_JQ TEMP_BUFF, BMP_WIDTH, BMP_HEIGHT, P2_buff, XP_W + 1, XP_H + 1, XB_L_2(TEMP_XXS_XBSB).X, XB_L_2(TEMP_XXS_XBSB).Y
                    'XS_XBMP_2 P2_buff, I
                    XS_SB_XBMP P2_buff, I, 2
                    Picture2(I).Visible = True
                Else
                    Picture2(I).Visible = False
                End If
            Next I
        Case 3 '单核
            If Val(txtpage.Text) > (Val(Text1(3).Text) - 1) / MAX_XS_GS + 1 Then txtpage.Text = Val(txtpage.Text) - 1
            For I = 0 To MAX_XS_GS - 1
                TEMP_XXS_XBSB = I + (CInt(txtpage.Text) - 1) * MAX_XS_GS
                If I < CInt(Text1(3).Text) - (CInt(txtpage.Text) - 1) * MAX_XS_GS Then
                '按图号NucCount将该图的数据放入buff
                    If I > 0 Then
                        If XB_L_3(TEMP_XXS_XBSB).NucCount <> XB_L_3(TEMP_XXS_XBSB - 1).NucCount Then
                            GET_XBMP_buff TEMP_BUFF, XB_L_3(TEMP_XXS_XBSB).NucCount
                        End If
                    End If
                    If I = 0 Then
                        GET_XBMP_buff TEMP_BUFF, XB_L_3(TEMP_XXS_XBSB).NucCount
                    End If
                    BMP_JQ TEMP_BUFF, BMP_WIDTH, BMP_HEIGHT, P2_buff, XP_W + 1, XP_H + 1, XB_L_3(TEMP_XXS_XBSB).X, XB_L_3(TEMP_XXS_XBSB).Y
                    'XS_XBMP_2 P2_buff, I
                    XS_SB_XBMP P2_buff, I, 2
                    Picture2(I).Visible = True
                Else
                    Picture2(I).Visible = False
                End If
            Next I
        Case 4 '嗜酸
            If Val(txtpage.Text) > (Val(Text1(4).Text) - 1) / MAX_XS_GS + 1 Then txtpage.Text = Val(txtpage.Text) - 1
            For I = 0 To MAX_XS_GS - 1
                TEMP_XXS_XBSB = I + (CInt(txtpage.Text) - 1) * MAX_XS_GS
                If I < CInt(Text1(4).Text) - (CInt(txtpage.Text) - 1) * MAX_XS_GS Then
                '按图号NucCount将该图的数据放入buff
                    If I > 0 Then
                        If XB_L_4(TEMP_XXS_XBSB).NucCount <> XB_L_4(TEMP_XXS_XBSB - 1).NucCount Then
                            GET_XBMP_buff TEMP_BUFF, XB_L_4(TEMP_XXS_XBSB).NucCount
                        End If
                    End If
                    If I = 0 Then
                        GET_XBMP_buff TEMP_BUFF, XB_L_4(TEMP_XXS_XBSB).NucCount
                    End If
                    BMP_JQ TEMP_BUFF, BMP_WIDTH, BMP_HEIGHT, P2_buff, XP_W + 1, XP_H + 1, XB_L_4(TEMP_XXS_XBSB).X, XB_L_4(TEMP_XXS_XBSB).Y
                    'XS_XBMP_2 P2_buff, I
                    XS_SB_XBMP P2_buff, I, 2
                    Picture2(I).Visible = True
                Else
                    Picture2(I).Visible = False
                End If
            Next I
        Case 5 '嗜碱
            If Val(txtpage.Text) > (Val(Text1(5).Text) - 1) / MAX_XS_GS + 1 Then txtpage.Text = Val(txtpage.Text) - 1
            For I = 0 To MAX_XS_GS - 1
                TEMP_XXS_XBSB = I + (CInt(txtpage.Text) - 1) * MAX_XS_GS
                If I < CInt(Text1(5).Text) - (CInt(txtpage.Text) - 1) * MAX_XS_GS Then
                '按图号NucCount将该图的数据放入buff
                    If I > 0 Then
                        If XB_L_5(TEMP_XXS_XBSB).NucCount <> XB_L_5(TEMP_XXS_XBSB - 1).NucCount Then
                            GET_XBMP_buff TEMP_BUFF, XB_L_5(TEMP_XXS_XBSB).NucCount
                        End If
                    End If
                    If I = 0 Then
                        GET_XBMP_buff TEMP_BUFF, XB_L_5(TEMP_XXS_XBSB).NucCount
                    End If
                    BMP_JQ TEMP_BUFF, BMP_WIDTH, BMP_HEIGHT, P2_buff, XP_W + 1, XP_H + 1, XB_L_5(TEMP_XXS_XBSB).X, XB_L_5(TEMP_XXS_XBSB).Y
                    'XS_XBMP_2 P2_buff, I
                    XS_SB_XBMP P2_buff, I, 2
                    Picture2(I).Visible = True
                Else
                    Picture2(I).Visible = False
                End If
            Next I
        Case 6 '未分类
            If Val(txtpage.Text) > (Val(Text1(6).Text) - 1) / MAX_XS_GS + 1 Then txtpage.Text = Val(txtpage.Text) - 1
            For I = 0 To MAX_XS_GS - 1
                TEMP_XXS_XBSB = I + (CInt(txtpage.Text) - 1) * MAX_XS_GS
                If I < CInt(Text1(0).Text) - (CInt(txtpage.Text) - 1) * MAX_XS_GS Then
                '按图号NucCount将该图的数据放入buff
                    If I > 0 Then
                        If XB_L_0(TEMP_XXS_XBSB).NucCount <> XB_L_0(TEMP_XXS_XBSB - 1).NucCount Then
                            GET_XBMP_buff TEMP_BUFF, XB_L_0(TEMP_XXS_XBSB).NucCount
                        End If
                    End If
                    If I = 0 Then
                        GET_XBMP_buff TEMP_BUFF, XB_L_0(TEMP_XXS_XBSB).NucCount
                    End If
                    BMP_JQ TEMP_BUFF, BMP_WIDTH, BMP_HEIGHT, P2_buff, XP_W + 1, XP_H + 1, XB_L_0(TEMP_XXS_XBSB).X, XB_L_0(TEMP_XXS_XBSB).Y
                    'XS_XBMP_2 P2_buff, I
                    XS_SB_XBMP P2_buff, I, 2
                    Picture2(I).Visible = True
                Else
                    Picture2(I).Visible = False
                End If
            Next I
        Case 7 '全部
            If Val(txtpage.Text) > (Val(Text1(7).Text) - 1) / MAX_XS_GS + 1 Then txtpage.Text = Val(txtpage.Text) - 1
            ’实现将前6种细胞都统计在一起显示,第页只能显示27个细胞
            For I = 0 To MAX_XS_GS - 1
                TEMP_XXS_XBSB = I + (CInt(txtpage.Text) - 1) * MAX_XS_GS
                If I < CInt(Text1(6).Text) - (CInt(txtpage.Text) - 1) * MAX_XS_GS Then
                    Picture2(I).Visible = True
                Else
                    Picture2(I).Visible = False
                End If
            Next I
            
        End Select
End Sub

解决方案 »

  1.   


        HGS = 9
        For I = 1 To 26
            Load Picture2(I)
                If I Mod HGS = 0 Then
                    Picture2(I).top = Picture2(I - HGS).top + Picture2(I).height + 100
                    Picture2(I).left = Picture2(I - HGS).left
                Else
                    Picture2(I).top = Picture2(I - 1).top
                    Picture2(I).left = Picture2(I - 1).left + Picture2(I).width + 100
                End If
            Picture2(I).ZOrder (0)
        Next I
    初始化加载了27个控件……
      

  2.   

    你把前面几个 Case n 每一个case后面执行的语句一段段都用sub包好,  Case 7的时候就调用这6个sub
      

  3.   

    TEMP_XXS_XBSB = I + (CInt(txtpage.Text) - 1) * MAX_XS_GS’针对相同类型细胞实现分页处理
    GET_XBMP_buff TEMP_BUFF, XB_L_5(TEMP_XXS_XBSB).NucCount’将下标为XB_L_5(TEMP_XXS_XBSB).NucCount的图片读入内存。
    XS_SB_XBMP P2_buff, I, 2’显示细胞
    最主要的问题就是在这个下标上,不同类型的细胞下标保存在不同的地方。