vb-dev
2022-11-30T21:47:39Z
Hello,

We are wondering if there is code internal to IGrid that sets Cursor.Current=Cursors.Default, or perhaps the hosting form's cursor to default.

When filling some grids, we experience a wait cursor for a short time. It returns to the default cursor long before the grid is filled and displayed. Has anyone seen this when using IGrid? If so, how did you correct it?

We typically fill IGrid in a manner very similar to this:

        Private Sub LoadSubmittedEntriesGrid()
            Using New WaitCursor
                Call SubmittedEntriesGrid.BeginUpdate()
                Call SubmittedEntriesGrid.Rows.Clear()
                Call GridFunctions.SetGridDefinition(m_DBProcess.DBProcessID, SubmittedEntriesGrid, SubmittedEntriesDataSet)
                Call SubmittedEntriesGrid.FillWithData(ARCData.ReconArcAccess.GetJournalEntriesSubmitted, True)
                Call SubmittedEntriesGrid.SortObject.Add(SubmittedEntriesGrid.Cols("JE_GROUPID").Index, iGSortOrder.Ascending)
                Call SubmittedEntriesGrid.Sort()
                Call SaveDefaultGridLayouts(SubmittedEntriesGrid)
                Call RestoreUserGridLayout(SubmittedEntriesGrid)
                Call SubmittedEntriesGrid.EndUpdate()
            End Using
        End Sub

Or, as a test, perhaps like this:

        Private Sub LoadSubmittedEntriesGrid()
            Cursor.Current = Cursors.WaitCursor

            Call SubmittedEntriesGrid.BeginUpdate()
            Call SubmittedEntriesGrid.Rows.Clear()
            Call GridFunctions.SetGridDefinition(m_DBProcess.DBProcessID, SubmittedEntriesGrid, SubmittedEntriesDataSet)
            Call SubmittedEntriesGrid.FillWithData(ARCData.ReconArcAccess.GetJournalEntriesSubmitted, True)
            Call SubmittedEntriesGrid.SortObject.Add(SubmittedEntriesGrid.Cols("JE_GROUPID").Index, iGSortOrder.Ascending)
            Call SubmittedEntriesGrid.Sort()
            Call SaveDefaultGridLayouts(SubmittedEntriesGrid)
            Call RestoreUserGridLayout(SubmittedEntriesGrid)
            Call SubmittedEntriesGrid.EndUpdate()

            Cursor.Current = Cursors.Default
        End Sub

In either case, the behavior is no different. We have tried everything we can think of. Thank you.

Igor/10Tec
2022-12-01T14:40:02Z
iGrid may change the cursor, but generally it happens during interactive operations - such as column resizing or autoscrolling.

Can you send us a sample demonstrating your issue? We admit that cursor change may happen in other operation, but we need a sample for the further consideration.
vb-dev
2022-12-01T18:52:38Z
Igor,

Posting this question prompted me to look ever closer at possible causes, and I found the root cause.

We had been overusing a class named WaitCursor which implements IDisposable and does for us what you might expect, given its name. It is a lifesaver, as Winforms doesn't behave as well as it should.

After ensuring class WaitCursor was only employed when necessary, I'm happy to report the cursor only returns to default after iGrid.FillWithData is finished.