Is there a way to get the events arguements of a dataGridView so I can call one of its eventhandlers?

Hello,

I have a dataGridView which a few things happen when one of the rows is clicked.  I handle this using the "CellClicked" event.  The cell clicked event requires two parameters, the first is the sender as an object (which I can cast my dataGridView to), and the second is a System.Windows.Forms.DataGridViewCellEventArgs.  Is there any way I can get or create the last  argument so I can call the event handler?  I have actually wanted to do this several times, but I have never figured out how to get ahold of the arguements.  

Thanks,

Rob
kidl33tAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Jorge PaulinoConnect With a Mentor IT Pro/DeveloperCommented:
You don't need to do that.

Try this way:


Dim myRowNumber As Integer = DGV.currentRow.Index + 1
Me.DGV.CurrentCell = Me.DGV(1, myRowNumber)
Me.DGV.Rows(myRowNumber).Selected = True    

Open in new window

0
 
Jorge PaulinoIT Pro/DeveloperCommented:
You can set the last paramater to Nothing
0
 
Jorge PaulinoIT Pro/DeveloperCommented:
Probably it's better to show us your code!
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
kidl33tAuthor Commented:
jpaulino:
I am looking to do this because I am creating a couple of buttons intended to scroll up and down the rows of a fairly customised datagridview.  The trouble is that if you go:

DGV.Rows(DGV.currentRow.Index + 1).Selected = True    '(assumg DGV is some dataGridView)

Visual basic does indeed mark that row as selected.  The problem is, it doesn't update the .currentRow property.  Eg if the currentRow was 0, the above code selects row 1, but the currentRow property still says 0.  The currentRow property is also ready only, so I can't update it either.  I need it to be updated however, because several other things depend on the currently selected row.

That's why I wanted to fire a CellClick event on the DGV, so it would do whatever it has to do internally to update the currentRow field.  

Does this make sense?
0
 
kidl33tAuthor Commented:
Whoops, the code I am working is:


    Private Sub PhotoNextButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PhotoNextButton.Click
        If Me.PhotosSelectDGV.CurrentRow.Index <= Me.PhotosSelectDGV.RowCount - 2 Then ' Make sure it doesn't try and run past the end of the rows
            Me.PhotosSelectDGV.Rows(Me.PhotosSelectDGV.CurrentRow.Index + 1).Selected = True
            Me.PhotosFullSizePB.Image = Me.getImageByID(Me.PhotosSelectDGV.CurrentRow.Cells("image_id").Value, True)
        End If
    End Sub
 
'And if you need it, get image by id is:
 
    'Returns the image from the DB, also resizes it to Me.PhotosFullSizePB dimensions
    Private Function getImageByID(ByVal id As Integer, ByVal resize As Boolean) As System.Drawing.Image
        Dim image_id As New SqlParameter("@image_id", id)
        Dim query As String = "EXEC dbo.select_image_by_id @image_id"
        Dim connection As SqlConnection = New SqlConnection(Me.connectionString)
        Dim command As New SqlCommand(query, connection)
        Dim adapter As SqlDataAdapter = New SqlDataAdapter(command)
        command.Parameters.Add(image_id)
        If Me.masterDS.Tables("currentFullImage") IsNot Nothing Then Me.masterDS.Tables("currentFullImage").Clear()
        adapter.Fill(Me.masterDS, "currentFullImage")
        Dim buffer As Byte()
        buffer = masterDS.Tables("currentFullImage").Rows(0).Item("binary")
        Dim ms As New IO.MemoryStream(buffer)
        Dim img As System.Drawing.Image
        img = System.Drawing.Image.FromStream(ms)
        If resize = False Then Return img
        If img.Height > Me.PhotosFullSizePB.Height And img.Width > Me.PhotosFullSizePB.Width Then
            Dim percTooTall As Decimal = img.Height / Me.PhotosFullSizePB.Height
            Dim percTooWide As Decimal = img.Width / Me.PhotosFullSizePB.Width
            If percTooTall >= percTooWide Then
                img = Me.GenerateThumbnail(img, CType(((Me.PhotosFullSizePB.Height / img.Height) * 100), Integer))
            Else
                img = Me.GenerateThumbnail(img, CType(((Me.PhotosFullSizePB.Width / img.Width) * 100), Integer))
            End If
        ElseIf img.Height > Me.PhotosFullSizePB.Height Then
            img = Me.GenerateThumbnail(img, CType(((Me.PhotosFullSizePB.Height / img.Height) * 100), Integer))
        ElseIf img.Width > Me.PhotosFullSizePB.Width Then
            img = Me.GenerateThumbnail(img, CType(((Me.PhotosFullSizePB.Width / img.Width) * 100), Integer))
        End If
        Return img
    End Function

Open in new window

0
 
Jorge PaulinoIT Pro/DeveloperCommented:
I didn't sow your last post. Just try it changing the name of the DGV to PhotosSelectDGV
0
 
kidl33tAuthor Commented:
Thanks man.  I didn't realize when I asked the question, my issue was actually that if I select a row programatically with the .selected=true that it doesn't update the currentrow.  I actually figured out the currentCell thing shortly after I posted this, but I think you should get the points for helping.  Cheers!
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.

All Courses

From novice to tech pro — start learning today.