We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. (Last updated on : Nov 16th 2018).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

Repainting a GDBG while dragging

Thread ID:

Created:

Updated:

Platform:

Replies:

18459 Aug 31,2004 06:02 PM UTC Sep 1,2004 11:27 AM UTC WinForms 3
loading
Tags: GridControl
Doug Lind
Asked On August 31, 2004 06:02 PM UTC

I am trying to implement an OLE D&D on a GridDataBoundGrid. Everything is working great except for erasing the old drop target line. Per examples provided by you, I''ve come up with the following DragOver handler. Private Sub gdbdOrders_DragOver(ByVal sender As Object, ByVal e As DragEventArgs) Handles gdbgOrders.DragOver If draggingRows Then Dim row As Integer, col As Integer Dim pt As Point = New Point(e.X, e.Y) pt = gdbgOrders.PointToClient(pt) gdbgOrders.PointToRowCol(pt, row, col) ''Evaluate position and draw drop target Dim cellBounds As Rectangle = New Rectangle(gdbgOrders.ViewLayout.ClientRowColToPoint(row, 0, GridCellSizeKind.ActualSize), New Size(gdbgOrders.GetColWidth(0), gdbgOrders.GetRowHeight(row))) If Not (cellBounds.Equals(oldDropRect)) Then Dim pt1 As Point Dim pt2 As Point Dim g As Graphics = gdbgOrders.CreateGridGraphics() Dim p As Pen = New Pen(Color.FromArgb(100, Color.Blue), 6) Dim py As Pen = New Pen(Color.FromArgb(100, Color.Yellow), 6) If (Not oldDropRect.IsEmpty) Then ''''''This is what I am trying to use to clear the drop target line '''''' ''gdbgOrders.Invalidate(oldDropRect, True) ''gdbgOrders.Update() '''''' '''''' ''''''This is verifying that I have the correct coordinates in oldDropRect. It successfully overpaints the blue drop target pt1 = New Point(oldDropRect.Left, oldDropRect.Top + 3) pt2 = New Point(oldDropRect.Right, oldDropRect.Top + 3) g.DrawLine(py, pt1, pt2) py.Dispose() End If oldDropRect = cellBounds pt1 = New Point(cellBounds.Left, cellBounds.Top + 3) pt2 = New Point(cellBounds.Right, cellBounds.Top + 3) ''p.EndCap = LineCap.Flat ''p.EndCap = LineCap.DiamondAnchor ''p.StartCap = LineCap.DiamondAnchor g.DrawLine(p, pt1, pt2) g.Dispose() p.Dispose() dropTargetRow = row End If End If End Sub The example I followed was for a GridControl and worked as expected. The troublesome lines are: It works for the GridControl but not a GDBG. The code that draws the yellow line was to validate that the oldDropRect had sane coordinates. I correctly overdraws the previous target. I use ... gdbgOrders.Invalidate() gdbgOrders.Update() ... im DragDrop to successfully remove all target line from the grid. Any ideas why it doesn''t work from DragOver? It''s interesting that I can draw graphics but not trigger a paint event to clear the old target. Thanks, Doug

Administrator [Syncfusion]
Replied On August 31, 2004 06:58 PM UTC

Just something to try. After this line, gdbgOrders.Invalidate(oldDropRect, True) try calling Application.DoEvents() to see if that will trigger the update.

Doug Lind
Replied On September 1, 2004 10:48 AM UTC

That didn''t work Clay. It paints one line and locks up. I believe it is due to this warning from Microsoft: CAUTION Calling this method can cause code to be re-entered if a message raises an event. Since I''m doing an invalidate, my guess is the handler is getting rentered. I tried just grid.refresh and grid.update with DoEvents and got the same result. DoEvents by itself does not cause the reentry so it must be the event being raise in conjunction with DoEvents. I''m looking into getting the row header background color and drawing over the old target. Any thing else you can think of to try? Thanks, Doug

Administrator [Syncfusion]
Replied On September 1, 2004 11:27 AM UTC

Maybe the there is an open call to grid.BeginUpdate that is preventing the painting. So, maybe this will work. if gdbgOrders.Updating Then gdbgOrders.CancelUpdate() gdbgOrders.Invalidate(oldDropRect, True) gdbgOrders.Update()

CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

;