I have an UltraGrid control on a form, and the form has a context menu which the grid references as its context menu strip. When you invoke the context menu (right-click), I've noticed the underlying row (I have full row selection enabled) does not become selected and/or focused. So, I added the event handler below to try to accomplish this. When I left-click a row and then right click another row, there are two rows selected. My grid is set only to have one selected row at a time, but for some reason when the event fires, it still results in multiple rows being selected. The message box is in place to demonstrate that the program thinks there is only one row selected, but the UI shows two rows. Is there something I'm doing wrong?
Private Sub LogDataUltraGrid_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LogDataUltraGrid.MouseDown 'get the cell that was clicked.. Dim objCell As UltraGridCell = _ Me.LogDataUltraGrid.DisplayLayout.UIElement.LastElementEntered.GetContext(GetType(UltraGridCell)) If Not objCell Is Nothing Then 'remove the previous selection if there was one... If Me.LogDataUltraGrid.Selected.Rows.Count > 0 Then Me.LogDataUltraGrid.Selected.Rows(0).Selected = False objCell.Row.Selected = True MsgBox(Me.LogDataUltraGrid.Selected.Rows.Count) End If End Sub
Hi,
There aren't two rows selected. The row you left-clicked on is active and so it appears like it is selected.
FAQ:How do I turn off the ActiveRowAppearance so that the active row in the grid does not appear selected.
Rory,
Yes, I am sending you a sample application which uses the code that you have in your MouseDown event and I think you will see what is going on. You need to Active the object that you clicked over and because SelectTypeRow is set to Single you don't need to "deselect" the previously selected row.
Check out the sample and let me know if you have further questions.
Michael S.