0

UltraGridSQL データベースから取得した企業に関する情報を含むInfragistics を生成する VB.NET で作成されたアプリケーションがあります。ユーザーが行をクリックすると、AfterRowActivateイベントが発生し、画面の下半分に詳細情報が表示されます。それは完了し、うまく機能しています。これが呼び出されるメソッドです。

Private Sub grdCompany_AfterRowActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles grdCompany.AfterRowActivate

    If (Not grdCompany.ActiveRow.IsGroupByRow) Then
        If (grdCompany.ActiveRow.Cells("Company_id").Text <> "") Then

            FillCompanyAddressGrid()
            FillCompanyDetail()
            FillChildCompanyGrid()
            FillPropertiesGrid()

        End If
    End If
End Sub

ユーザーは、矢印キーを使用してグリッドをすばやくスクロールする傾向があります。そのため、AfterRowActivateイベントは毎回発生し、データベースに対して不要なクエリを実行しています。プログラムがデータベースで詳細な情報を探し始める前に、行を約0.5秒間強調表示する必要があるように、遅延を実装したいと考えています。しかし、私はこれを達成するのに苦労しています。これを行うための最良の方法は何ですか?

4

2 に答える 2

2

フォームにタイマーを作成する グリッドの AfterRowActive 関数で、タイマーをリセットします。

Private Sub grdCompany_AfterRowActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles grdCompany.AfterRowActivate

    If (Not grdCompany.ActiveRow.IsGroupByRow) Then
        If (grdCompany.ActiveRow.Cells("Company_id").Text <> "") Then
            Timer1.Enabled = False
            Timer1.Enabled = True
        End If
    End If
End Sub

タイマー イベントで、次のコードを実行します。

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick  
    FillCompanyAddressGrid()  
    FillCompanyDetail()  
    FillChildCompanyGrid()  
    FillPropertiesGrid()  
    Timer1.Enabled = False  
End Sub  
于 2012-12-18T20:11:57.920 に答える
1

500ミリ秒後に起動するタイマーを取り(個人的には、これはかなり長くなると思うので、100から200ミリ秒の範囲で何かを試すことをお勧めします)、ユーザーが行を選択するたびに、タイマー。

500 ミリ秒後にタイマーがイベントを発生させ、データをフェッチします。ユーザーが別の行を選択し続けると、タイマーがリセットされ続け、1 つの行が少なくとも 500 ミリ秒間選択されるまで、イベントは発生しません。

于 2012-12-18T20:04:57.790 に答える