• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 837
  • Last Modified:

Hit Test returns -1 coordinates VB.net datagridview

Hi

The code bellow returns -1 on both row and col index

any ideas why ? The X and Y coordinates show positive numbers
Dim hitTest As DataGridView.HitTestInfo
 
        hitTest = Me.DataGridView13.HitTest(e.X, e.Y)
 
        If hitTest.RowIndex <> -1 AndAlso hitTest.ColumnIndex <> -1 Then
            Dim cell As DataGridViewCell = Me.DataGridView13(hitTest.ColumnIndex, hitTest.RowIndex)
            cell.Value = e.Data.GetData(DataFormats.Text)
        End If

Open in new window

0
MichMat
Asked:
MichMat
  • 4
  • 3
1 Solution
 
Jorge PaulinoIT Pro/DeveloperCommented:
What you want to do and in what event are you using that code ?
0
 
MichMatAuthor Commented:
Im trying to draging and dropping item from a listbox into a datagridview cell
 Private Sub DataGridView13_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView13.DragDrop
 
 
 
        Dim hitTest As DataGridView.HitTestInfo
 
        hitTest = Me.DataGridView13.HitTest(e.X, e.Y)
 
        If hitTest.RowIndex <> -1 AndAlso hitTest.ColumnIndex <> -1 Then
            Dim cell As DataGridViewCell = Me.DataGridView13(hitTest.ColumnIndex, hitTest.RowIndex)
            cell.Value = e.Data.GetData(DataFormats.Text)
        End If
 
       
 
 
 
    End Sub

Open in new window

0
 
Jorge PaulinoIT Pro/DeveloperCommented:
Sorry e.Data.GetData should be for DragDrop:)
The e.X gives you the point on the screen and not in the datagridview. You cannot use that way and you have to first know where that point belong in the grid. Then you use the HitTestInfo.
 Try this way:

    Private Sub DataGridView1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop
 
        Dim p As Point = Me.DataGridView1.PointToClient(New Point(e.X, e.Y))
        Dim hitTest As DataGridView.HitTestInfo = DataGridView1.HitTest(p.X, p.Y)
 
        If hitTest.RowIndex <> -1 AndAlso hitTest.ColumnIndex <> -1 Then
            Dim cell As DataGridViewCell = Me.DataGridView1(hitTest.ColumnIndex, hitTest.RowIndex)
            cell.Value = e.Data.GetData(DataFormats.Text)
        End If
 
 
    End Sub

Open in new window

0
Cloud Class® Course: Certified Penetration Testing

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

 
MichMatAuthor Commented:
Im getting an error when running your code, its comes up as a Mesage Box and says that my string isnt recognised as a valid bolleon Im including all the code that Im using to do this drag and drop may be you could spot the error thank you
the only otherthing is that the datagid has dragdrop enabeled
Private Sub ListBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseMove
        If e.Button = Windows.Forms.MouseButtons.Left Then
            Dim index As Integer = ListBox1.SelectedIndex
            If index <> -1 Then
                LBvalue = ListBox1.Items(index)
                ListBox1.DoDragDrop(LBvalue, DragDropEffects.All)
            End If
        End If
    End Sub
 
    Private Sub DataGridView13_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView13.DragDrop
 
 
        
        Dim p As Point = Me.DataGridView13.PointToClient(New Point(e.X, e.Y))
        Dim hitTest As DataGridView.HitTestInfo = DataGridView13.HitTest(p.X, p.Y)
 
        If hitTest.RowIndex <> -1 AndAlso hitTest.ColumnIndex <> -1 Then
            Dim cell As DataGridViewCell = Me.DataGridView13(hitTest.ColumnIndex, hitTest.RowIndex)
            cell.Value = e.Data.GetData(DataFormats.Text)
        End If
 
    End Sub
 
 
    Private Sub DataGridView13_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView13.DragEnter
        If e.Data.GetDataPresent(DataFormats.Text) Then
            e.Effect = DragDropEffects.All
        End If
    End Sub

Open in new window

0
 
MichMatAuthor Commented:
Just figgured it out I had the grid column formated at checkbox type ??????

Your code now works perfectly
0
 
MichMatAuthor Commented:
As always A1 work, Im always happy when JP takes my questions as I know I will get a great result. Thank You
0
 
Jorge PaulinoIT Pro/DeveloperCommented:
Glad I could help MichMat!
jpaulino
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now