イベント処理のスピードを上げるには?


soon  2004-12-11 01:06:54  No: 118186

何度もこちらでアドバイスもらって問題を解決したんで、今度もよろしくお願いします。今Gridの上にチェックボックスを貼り付けて、単一選択でチェックにチェックをすれば選択されたラベル(イメージ画像が選択されたように見えるようイメージの下のラベル)に色をつけるんです。ソースは以下のとおりです。
Private Sub Check1_Click(Index As Integer)
Dim i As Integer

With MSFlexGrid1
.Visible = False

If Wk_index = 0 Then
   Wk_index = Index
End If
If Wk_index = Index Then

   For Wk_count = 1 To 16
     If Wk_count < (D_MaxGazo - 16 * (P_Index - 1)) + 1 Then
       If Index <> Wk_count Then
          Check1(Wk_count).Value = False
          .Row = Wk_count
          .Col = 0
          .CellBackColor = &HFFFFFF
          .Col = 1
          .CellBackColor = &HFFFFFF
            If Check_Flg = 0 Then
                  Image1(Wk_count).Appearance = 0
                  Label4(Wk_count).BackColor = &HC0C0C0
            End If
       Else
            If D_Check(Index + 16 * (P_Index - 1)) = 0 Then
                If Check_No = 0 Then
                    Check_No = Index + 16 * (P_Index - 1)
                    D_Check(Check_No) = 1
                    .Row = Wk_count
                    .Col = 0
                    .CellBackColor = &H80FF80
                    .Col = 1
                    .CellBackColor = &H80FF80
       
                ElseIf Check_No <> 0 Then
                        D_Check(Check_No) = 0
                        Check_No = Index + 16 * (P_Index - 1)
                        D_Check(Check_No) = 1
                        .Row = Wk_count
                        .Col = 0
                        .CellBackColor = &H80FF80
                        .Col = 1
                        .CellBackColor = &H80FF80
                End If
                Command4.Visible = True
                
            ElseIf D_Check(Index + 16 * (P_Index - 1)) = 1 Then
                    Check1(Index).Value = 0
                    D_Check(Index + 16 * (P_Index - 1)) = 0
                    Check_No = 0
                    .Row = Index
                    .Col = 0
                    If .CellBackColor = &H80FF80 Then
                        .CellBackColor = &HFFFFFF
                        .Col = 1
                        .CellBackColor = &HFFFFFF
                    End If
              Command4.Visible = False
           End If
            If Check_Flg = 0 Then
               If Image1(Index).Appearance = 0 Then
                  Image1(Index).Appearance = 1
                  Label4(Index).BackColor = &HFF8080
               Else
                  Image1(Index).Appearance = 0
                  Label4(Index).BackColor = &HC0C0C0
               End If
            End If
        End If
       End If
    Next
    Wk_index = 0
End If
    Refresh
    .Visible = True
End With
End Sub

問題はクリックしたらGrid上でフォーカスが走るのも見えるし、pictureboxでフォーカスが走るのも見えて、その上スピードもかなり遅いです。visibleの状態を入れ替えてもまったく効果がないです。どうぞよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加