About problem 1:
When the grid is in edit mode, the mouse wheel behavior might make sense, otherwise it would not be possible to add rows to the grid. But in my use case, the grid is read only, so it is feels wrong that additional rows are added.
Even if the grid is in edit mode, the behavior is strange. Excel itself displays some kind of endless grid, where you can scroll in all directions and reach new rows/cols. GridDesktop does not allow to add cols to the right of the grid, the context menu item “Insert col” does not allow adding a col after the last col. Same for “Insert row”. Maybe it would help to add rows/cols if cursor right/down keys are pressed?
If you want to simulate the Excel behavior, maybe you should fill the visible area with additional rows/cols so that GridDesktop displays empty cells in the full visible screen area.
What do you think? But as I wrote: my use case is a read only grid, so no requirement to improve this. But if would be nice if you could remove the adding of rows in read only mode when using the mouse wheel ;-).
Bonus problem:
The grid context menu separators are menu items with text “-”:
contextmenu.png (4.9 KB)
About Problem 3:
I added our license to the sample so that it does not display any license sheets. The error when removing the single sheet still happens (it only happens if you click somewhere inside the sheet data, that is still visible though removed):
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at System.Collections.ArrayList.get_Item(Int32 index)
at Aspose.Cells.GridDesktop.WorksheetCollection.(Int32 )
at Aspose.Cells.GridDesktop.WorksheetCollection.get_Item(Int32 index)
at Aspose.Cells.GridDesktop.GridDesktop.GetActiveWorksheet()
at Aspose.Cells.GridDesktop.Worksheet.SetFirstVisibleColumn(Int32 col)
at Aspose.Cells.GridDesktop.GridDesktop.(Int32 , Boolean )
at Aspose.Cells.GridDesktop.GridDesktop.(Int32 )
at Aspose.Cells.GridDesktop.GridDesktop.(Int32 , Int32 )
at Aspose.Cells.GridDesktop.GridDesktop.(Worksheet , Int32 , Int32 , Boolean )
at Aspose.Cells.GridDesktop.GridDesktop.(Worksheet , Int32 , Int32 )
at Aspose.Cells.GridDesktop.GridDesktop.OnMouseDown(MouseEventArgs e)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(HWND hWnd, MessageId msg, WPARAM wparam, LPARAM lparam)
Best regards
Wolfgang