تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[كود] عمل DragDrop Row in DGV
#1
اضف مودل جديد وضع به
PHP كود :
Private fromIndex As Integer
    Private dragIndex 
As Integer
    Private dragRect 
As Rectangle
    Dim Arrow 
As Label Nothing
    Dim frm 
As Object
    Public Sub Dragable
(ByVal DGV As DataGridView)
 
       frm DGV.Parent
        DGV
.AllowDrop True
        AddHandler DGV
.DragOverAddressOf DragOver
        AddHandler DGV
.MouseDownAddressOf MouseDown
        AddHandler DGV
.DragDropAddressOf DragDrop
        AddHandler DGV
.MouseMoveAddressOf MouseMove
        AddHandler DGV
.MouseUpAddressOf MouseUp
    End Sub
    Private Sub DragDrop
(sender As ObjectAs DragEventArgs)
 
       Dim p As Point sender.PointToClient(New Point(e.Xe.Y))
 
       dragIndex sender.HitTest(p.Xp.Y).RowIndex
        If 
(e.Effect DragDropEffects.MoveThen
            Dim dragRow 
As DataGridViewRow e.Data.GetData(GetType(DataGridViewRow))
 
           sender.Rows.RemoveAt(fromIndex)
 
           Try
                sender
.Rows.Insert(dragIndexdragRow)
 
               sender.ClearSelection()
 
               sender.Rows(dragIndex).Selected True
            Catch ex 
As Exception
                sender
.Rows.Insert(fromIndexdragRow)
 
           End Try
 
           Arrow.Dispose()
 
       End If
 
   End Sub

    Private Sub DragOver
(sender As ObjectAs DragEventArgs)
 
       e.Effect DragDropEffects.Move
        If Not IsNothing
(ArrowThen
            Dim x 
As Integer sender.HitTest(sender.findform.PointToClient(New Point(e.Xe.Y)).Xsender.findform.PointToClient(New Point(e.Xe.Y)).Y).RowIndex
            If x 
= -1 Then Arrow.Visible False Else Arrow.Visible True
            Dim iii 
As Integer sender.Top sender.ColumnHeadersHeight
            Dim num 
As Double 0
            For i 
0 To x
                If i 
x Then
                    num 
sender.rows(i).height Arrow.Height

                Else
                    iii 
iii sender.Rows(i).Height
                End 
If

 
           Next
            Arrow
.Top iii num
        End 
If
 
   End Sub

    Private Sub MouseDown
(sender As ObjectAs MouseEventArgs)
 
       fromIndex sender.HitTest(e.Xe.Y).RowIndex

        If fromIndex 
> -1 Then
            Dim dragSize 
As Size SystemInformation.DragSize
            dragRect 
= New Rectangle(New Point(e.- (dragSize.Width 2), _
            e
.- (dragSize.Height 2)), _
            dragSize
)
 
           DrowArrow(sender)
 
       Else
            dragRect 
Rectangle.Empty
 
       End If
 
   End Sub
    Private Sub MouseUp
(sender As ObjectAs MouseEventArgs)
 
       Arrow.Dispose()
 
   End Sub
    Private Sub MouseMove
(sender As ObjectAs MouseEventArgs)
 
       If (e.Button And MouseButtons.Left) = MouseButtons.Left Then
            If 
(dragRect <> Rectangle.Empty _
            AndAlso Not dragRect
.Contains(e.Xe.Y)) Then
                sender
.DoDragDrop(sender.Rows(fromIndex), _
                DragDropEffects
.Move)
 
           End If
 
       End If
 
   End Sub
    Private Sub DrowArrow
(sender As DataGridView)
 
       Dim lb As New Label
        lb
.Font = New Font("Arial"15)
 
       lb.Text "◄"
 
       lb.BackColor Color.Yellow
        lb
.ForeColor Color.Red
        lb
.AutoSize True
        lb
.BringToFront()
 
       Arrow lb
        If Not IsNothing
(frmThen sender.controls.add(Arrow)
 
       Arrow.Left sender.left sender.width Arrow.Width
    End Sub 

  وفي الفورم ضع الكود
PHP كود :
Dragable(DataGridView1
الرد }}}
تم الشكر بواسطة: khodor1985 , myalsailamy , myalsailamy , sniperjawadino , Done , asemshahen5


الردود في هذا الموضوع
عمل DragDrop Row in DGV - بواسطة HASAN6.0 - 04-12-15, 12:23 AM
RE: عمل DragDrop Row in DGV - بواسطة myalsailamy - 04-12-15, 04:29 AM

التنقل السريع :


يقوم بقرائة الموضوع: