Solved

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

Posted on 2008-06-12
7
157 Views
Last Modified: 2013-11-26
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
0
Comment
Question by:kidl33t
  • 4
  • 3
7 Comments
 
LVL 48

Expert Comment

by:jpaulino
ID: 21771166
You can set the last paramater to Nothing
0
 
LVL 48

Expert Comment

by:jpaulino
ID: 21771178
Probably it's better to show us your code!
0
 

Author Comment

by:kidl33t
ID: 21771366
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
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

Author Comment

by:kidl33t
ID: 21771399
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
 
LVL 48

Accepted Solution

by:
jpaulino earned 500 total points
ID: 21771553
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
 
LVL 48

Expert Comment

by:jpaulino
ID: 21771569
I didn't sow your last post. Just try it changing the name of the DGV to PhotosSelectDGV
0
 

Author Closing Comment

by:kidl33t
ID: 31466608
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

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now