Results 1 to 12 of 12

Thread: How to call a sub by sender and e

  1. #1

    Thread Starter
    Addicted Member
    Join Date
    Mar 2017
    Location
    Netherlands
    Posts
    136

    How to call a sub by sender and e

    Good day,

    I have a dynamically generated datagridview and now i want to do a mouseclick event

    Code:
    Public Sub dgv_MouseClick(sender As Object, e As MouseEventArgs)
    But now i do not know how to call it with what sender parameter and e parameter

    Thnaks in advance

  2. #2
    Addicted Member
    Join Date
    May 2017
    Location
    Italy
    Posts
    170

    Re: How to call a sub by sender and e

    can you show please your code ?

  3. #3

    Thread Starter
    Addicted Member
    Join Date
    Mar 2017
    Location
    Netherlands
    Posts
    136

    Re: How to call a sub by sender and e

    Code:
     Public Sub dgv_MouseClick(sender As Object, e As MouseEventArgs)
            For Each page As TabPage In DTC.TabPages
                Dim grid = page.Controls.OfType(Of DataGridView)().Single()
                For Each selectedCell As DataGridViewCell In DirectCast(grid.SelectedCells, BaseCollection)
                    If selectedCell.ColumnIndex = 5 Then
                        If selectedCell.Value Is DBNull.Value Then
                            selectedCell.Value = True
                        ElseIf CBool(selectedCell.Value) = False Then
                            selectedCell.Value = True
                        ElseIf CBool(selectedCell.Value) = True Then
                            selectedCell.Value = False
                        End If
                    End If
                Next
            Next
    
        End Sub
    Last edited by zubenubie; Apr 16th, 2018 at 05:12 AM.

  4. #4
    Addicted Member
    Join Date
    May 2017
    Location
    Italy
    Posts
    170

    Re: How to call a sub by sender and e

    Quote Originally Posted by zubenubie View Post
    I have a dynamically generated datagridview and now i want to do a mouseclick event
    I'm sorry, I mean code for generating datagridview

  5. #5

    Thread Starter
    Addicted Member
    Join Date
    Mar 2017
    Location
    Netherlands
    Posts
    136

    Re: How to call a sub by sender and e

    Code:
    Dim dgv As New DataGridView
                dgv.Dock = DockStyle.Fill
                dgv.DataSource = RestHours2TableAdapter._Select(item(ComboBox1.ValueMember), TextBox1.Text, TextBox2.Text)
                dgv.RowTemplate.Height = 30
                dgv.AllowUserToAddRows = False
                dgv.AllowUserToDeleteRows = False
                dgv.AllowUserToOrderColumns = False
                dgv.AllowUserToResizeColumns = False
                page.Controls.Add(dgv)
    
            Next
    
            For Each page As TabPage In DTC.TabPages
                DTC.SelectTab(page)
            Next
            DTC.SelectTab(0)
            For Each page As TabPage In DTC.TabPages
                For Each ctl As Control In page.Controls
                    If TypeOf ctl Is DataGridView Then
                        Dim dgv As DataGridView = DirectCast(ctl, DataGridView)
    
                        'Add Columns
                        dgv.Columns(0).Name = "ID"
                        dgv.Columns(0).HeaderText = "ID"
                        dgv.Columns(0).Visible = False
                        dgv.Columns(1).Name = "CrewId"
                        dgv.Columns(1).HeaderText = "CrewId"
                        dgv.Columns(1).Visible = False
                        dgv.Columns(2).Name = "Day"
                        dgv.Columns(2).HeaderText = "Day"
                        dgv.Columns(2).Width = 40
                        dgv.Columns(3).Name = "1"
                        dgv.Columns(3).HeaderText = ""
                        dgv.Columns(3).Width = 17
                        dgv.Columns(4).Name = "2"
                        dgv.Columns(4).HeaderText = "1"
                        dgv.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(4).Width = 17
                        dgv.Columns(5).Name = "3"
                        dgv.Columns(5).HeaderText = ""
                        dgv.Columns(5).Width = 17
                        dgv.Columns(6).Name = "4"
                        dgv.Columns(6).HeaderText = "2"
                        dgv.Columns(6).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(6).Width = 17
                        dgv.Columns(7).Name = "5"
                        dgv.Columns(7).HeaderText = ""
                        dgv.Columns(7).Width = 17
                        dgv.Columns(8).Name = "6"
                        dgv.Columns(8).HeaderText = "3"
                        dgv.Columns(8).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(8).Width = 17
                        dgv.Columns(9).Name = "7"
                        dgv.Columns(9).HeaderText = ""
                        dgv.Columns(9).Width = 17
                        dgv.Columns(10).Name = "8"
                        dgv.Columns(10).HeaderText = "4"
                        dgv.Columns(10).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(10).Width = 17
                        dgv.Columns(11).Name = "9"
                        dgv.Columns(11).HeaderText = ""
                        dgv.Columns(11).Width = 17
                        dgv.Columns(12).Name = "10"
                        dgv.Columns(12).HeaderText = "5"
                        dgv.Columns(12).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(12).Width = 17
                        dgv.Columns(13).Name = "11"
                        dgv.Columns(13).HeaderText = ""
                        dgv.Columns(13).Width = 17
                        dgv.Columns(14).Name = "12"
                        dgv.Columns(14).HeaderText = "6"
                        dgv.Columns(14).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(14).Width = 17
                        dgv.Columns(15).Name = "13"
                        dgv.Columns(15).HeaderText = ""
                        dgv.Columns(15).Width = 17
                        dgv.Columns(16).Name = "14"
                        dgv.Columns(16).HeaderText = "7"
                        dgv.Columns(16).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(16).Width = 17
                        dgv.Columns(17).Name = "15"
                        dgv.Columns(17).HeaderText = ""
                        dgv.Columns(17).Width = 17
                        dgv.Columns(18).Name = "16"
                        dgv.Columns(18).HeaderText = "8"
                        dgv.Columns(18).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(18).Width = 17
                        dgv.Columns(19).Name = "17"
                        dgv.Columns(19).HeaderText = ""
                        dgv.Columns(19).Width = 17
                        dgv.Columns(20).Name = "18"
                        dgv.Columns(20).HeaderText = "9"
                        dgv.Columns(20).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(20).Width = 17
                        dgv.Columns(21).Name = "19"
                        dgv.Columns(21).HeaderText = ""
                        dgv.Columns(21).Width = 17
                        dgv.Columns(22).Name = "20"
                        dgv.Columns(22).HeaderText = "10"
                        dgv.Columns(22).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(22).Width = 17
                        dgv.Columns(23).Name = "21"
                        dgv.Columns(23).HeaderText = ""
                        dgv.Columns(23).Width = 17
                        dgv.Columns(24).Name = "22"
                        dgv.Columns(24).HeaderText = "11"
                        dgv.Columns(24).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(24).Width = 17
                        dgv.Columns(25).Name = "23"
                        dgv.Columns(25).HeaderText = ""
                        dgv.Columns(25).Width = 17
                        dgv.Columns(26).Name = "24"
                        dgv.Columns(26).HeaderText = "12"
                        dgv.Columns(26).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(26).Width = 17
                        dgv.Columns(27).Name = "25"
                        dgv.Columns(27).HeaderText = ""
                        dgv.Columns(27).Width = 17
                        dgv.Columns(28).Name = "26"
                        dgv.Columns(28).HeaderText = "13"
                        dgv.Columns(28).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(28).Width = 17
                        dgv.Columns(29).Name = "27"
                        dgv.Columns(29).HeaderText = ""
                        dgv.Columns(29).Width = 17
                        dgv.Columns(30).Name = "28"
                        dgv.Columns(30).HeaderText = "14"
                        dgv.Columns(30).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(30).Width = 17
                        dgv.Columns(31).Name = "29"
                        dgv.Columns(31).HeaderText = ""
                        dgv.Columns(31).Width = 17
                        dgv.Columns(32).Name = "30"
                        dgv.Columns(32).HeaderText = "15"
                        dgv.Columns(32).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(32).Width = 17
                        dgv.Columns(33).Name = "31"
                        dgv.Columns(33).HeaderText = ""
                        dgv.Columns(33).Width = 17
                        dgv.Columns(34).Name = "32"
                        dgv.Columns(34).HeaderText = "16"
                        dgv.Columns(34).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(34).Width = 17
                        dgv.Columns(35).Name = "33"
                        dgv.Columns(35).HeaderText = ""
                        dgv.Columns(35).Width = 17
                        dgv.Columns(36).Name = "34"
                        dgv.Columns(36).HeaderText = "17"
                        dgv.Columns(36).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(36).Width = 17
                        dgv.Columns(37).Name = "35"
                        dgv.Columns(37).HeaderText = ""
                        dgv.Columns(37).Width = 17
                        dgv.Columns(38).Name = "36"
                        dgv.Columns(38).HeaderText = "18"
                        dgv.Columns(38).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(38).Width = 17
                        dgv.Columns(39).Name = "37"
                        dgv.Columns(39).HeaderText = ""
                        dgv.Columns(39).Width = 17
                        dgv.Columns(40).Name = "38"
                        dgv.Columns(40).HeaderText = "19"
                        dgv.Columns(40).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(40).Width = 17
                        dgv.Columns(41).Name = "39"
                        dgv.Columns(41).HeaderText = ""
                        dgv.Columns(41).Width = 17
                        dgv.Columns(42).Name = "40"
                        dgv.Columns(42).HeaderText = "20"
                        dgv.Columns(42).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(42).Width = 17
                        dgv.Columns(43).Name = "41"
                        dgv.Columns(43).HeaderText = ""
                        dgv.Columns(43).Width = 17
                        dgv.Columns(44).Name = "42"
                        dgv.Columns(44).HeaderText = "21"
                        dgv.Columns(44).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(44).Width = 17
                        dgv.Columns(45).Name = "43"
                        dgv.Columns(45).HeaderText = ""
                        dgv.Columns(45).Width = 17
                        dgv.Columns(46).Name = "44"
                        dgv.Columns(46).HeaderText = "22"
                        dgv.Columns(46).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(46).Width = 17
                        dgv.Columns(47).Name = "45"
                        dgv.Columns(47).HeaderText = ""
                        dgv.Columns(47).Width = 17
                        dgv.Columns(48).Name = "46"
                        dgv.Columns(48).HeaderText = "23"
                        dgv.Columns(48).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(48).Width = 17
                        dgv.Columns(49).Name = "47"
                        dgv.Columns(49).HeaderText = ""
                        dgv.Columns(49).Width = 17
                        dgv.Columns(50).Name = "48"
                        dgv.Columns(50).HeaderText = "24"
                        dgv.Columns(50).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                        dgv.Columns(50).Width = 17
                        dgv.Columns(51).Name = "Remarks"
                        dgv.Columns(51).HeaderText = "Remarks"
                        dgv.Columns(51).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
                        dgv.Columns(52).Name = "Alert24Hrs"
                        dgv.Columns(52).HeaderText = "Alert 24 hrs"
                        dgv.Columns(52).Width = 100
                        dgv.Columns(53).Name = "Alert7D"
                        dgv.Columns(53).HeaderText = "Alert 7 Days"
                        dgv.Columns(53).Width = 100
                        dgv.Columns(54).Name = "HoursRest"
                        dgv.Columns(54).HeaderText = "Hours rest in this 24 hrs"
                        dgv.Columns(54).Width = 100
                        dgv.Columns(55).Name = "Month1"
                        dgv.Columns(55).HeaderText = "Month1"
                        dgv.Columns(55).Visible = False
                        dgv.Columns(56).Name = "Year1"
                        dgv.Columns(56).HeaderText = "Year1"
                        dgv.Columns(56).Visible = False
                        dgv.Columns(57).Visible = False
    
                    End If
                Next
            Next

  6. #6
    Addicted Member
    Join Date
    May 2017
    Location
    Italy
    Posts
    170

    Re: How to call a sub by sender and e


  7. #7
    Fanatic Member Arve K.'s Avatar
    Join Date
    Sep 2008
    Location
    Kyrksæterøra, Norway
    Posts
    518

    Re: How to call a sub by sender and e

    vb.net Code:
    1. Option Strict On
    2. Option Explicit On
    3.  
    4. Public Class Form1
    5.  
    6.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    7.         Dim MyDGV1 As New DataGridView With {.Name = "My DataGridView #1"}
    8.         Dim MyDGV2 As New DataGridView With {.Name = "My DataGridView #2"}
    9.  
    10.         AddHandler MyDGV1.Click, AddressOf DGV_Click
    11.         AddHandler MyDGV2.Click, AddressOf DGV_Click
    12.  
    13.         Me.Controls.AddRange({MyDGV1, MyDGV2})
    14.  
    15.         MyDGV2.Left = MyDGV1.Left + MyDGV1.Width + 10
    16.     End Sub
    17.  
    18.     Private Sub DGV_Click(sender As Object, e As EventArgs)
    19.         Dim DGV As DataGridView = DirectCast(sender, DataGridView)
    20.  
    21.         MessageBox.Show(DGV.Name)
    22.  
    23.     End Sub
    24.  
    25. End Class
    Last edited by Arve K.; Apr 16th, 2018 at 09:11 AM.
    Arve K.

    Please mark your thread as resolved and add reputation to those who helped you solve your problem
    Disclaimer: I am not a professional programmer

  8. #8
    Smooth Moperator techgnome's Avatar
    Join Date
    May 2002
    Posts
    34,537

    Re: How to call a sub by sender and e

    Edit: I missed the bolded part below... mea culpa... this is irrelevant. -tg

    Quote Originally Posted by zubenubie View Post
    Good day,

    I have a dynamically generated datagridview and now i want to do a mouseclick event

    Code:
    Public Sub dgv_MouseClick(sender As Object, e As MouseEventArgs)
    But now i do not know how to call it with what sender parameter and e parameter

    Thnaks in advance
    Generally... you don't... what you should do is put the code into a sub that you can call from anywhere, including your click event.


    Code:
     Public Sub dgv_MouseClick(sender As Object, e As MouseEventArgs)
        DoSomething
      End Sub
    
    
    
    
    Private Sub DoSomething
            For Each page As TabPage In DTC.TabPages
                Dim grid = page.Controls.OfType(Of DataGridView)().Single()
                For Each selectedCell As DataGridViewCell In DirectCast(grid.SelectedCells, BaseCollection)
                    If selectedCell.ColumnIndex = 5 Then
                        If selectedCell.Value Is DBNull.Value Then
                            selectedCell.Value = True
                        ElseIf CBool(selectedCell.Value) = False Then
                            selectedCell.Value = True
                        ElseIf CBool(selectedCell.Value) = True Then
                            selectedCell.Value = False
                        End If
                    End If
                Next
            Next
    
        End Sub
    
    Private Sub DoSomethingElse
       DoSomething
    End Sub
    It's that simple...

    -tg
    * I don't respond to private (PM) requests for help. It's not conducive to the general learning of others.*
    * I also don't respond to friend requests. Save a few bits and don't bother. I'll just end up rejecting anyways.*
    * How to get EFFECTIVE help: The Hitchhiker's Guide to Getting Help at VBF - Removing eels from your hovercraft *
    * How to Use Parameters * Create Disconnected ADO Recordset Clones * Set your VB6 ActiveX Compatibility * Get rid of those pesky VB Line Numbers * I swear I saved my data, where'd it run off to??? *

  9. #9
    Super Moderator FunkyDexter's Avatar
    Join Date
    Apr 2005
    Location
    An obscure body in the SK system. The inhabitants call it Earth
    Posts
    7,902

    Re: How to call a sub by sender and e

    Typically you wouldn't "call" it. Instead you make it the handler for a particular type of event. So notice that Arve's code contains the following:-
    VB.Net Code:
    1. AddHandler MyDGV1.Click, AddressOf DGV_Click
    ...that sets DGV_Click to be the handler of MyDGV1's click event. The system than calls it for you, passing in the correct sender and e - you don't need to concern yourself with that at all.

    You want to do something similar in your code but referencing your datagridview and your Method. Probably you would do this just after it's been created in your code. I say probably because you can add it and remove it dynamically whenever you need to but it will only handle the click after it's been added and will stop handling it if it's removed.

    edit> crossed over with TG
    The best argument against democracy is a five minute conversation with the average voter - Winston Churchill

    Hadoop actually sounds more like the way they greet each other in Yorkshire - Inferrd

  10. #10
    PowerPoster i00's Avatar
    Join Date
    Mar 2002
    Location
    1/2 way accross the galaxy.. and then some
    Posts
    2,388

    Re: How to call a sub by sender and e

    Or you could use auto-wireup:

    Code:
    Public Sub dgv_MouseClick(sender As Object, e As MouseEventArgs) Handles dgv.MouseClick
    Kris

  11. #11
    Smooth Moperator techgnome's Avatar
    Join Date
    May 2002
    Posts
    34,537

    Re: How to call a sub by sender and e

    Quote Originally Posted by i00 View Post
    Or you could use auto-wireup:

    Code:
    Public Sub dgv_MouseClick(sender As Object, e As MouseEventArgs) Handles dgv.MouseClick
    Kris
    Not if you
    have a dynamically generated datagridview
    You can only do that with a DGV created at design-time. In this case it's created at run-time, so that won't work (or we wouldn't be here.)

    -tg
    * I don't respond to private (PM) requests for help. It's not conducive to the general learning of others.*
    * I also don't respond to friend requests. Save a few bits and don't bother. I'll just end up rejecting anyways.*
    * How to get EFFECTIVE help: The Hitchhiker's Guide to Getting Help at VBF - Removing eels from your hovercraft *
    * How to Use Parameters * Create Disconnected ADO Recordset Clones * Set your VB6 ActiveX Compatibility * Get rid of those pesky VB Line Numbers * I swear I saved my data, where'd it run off to??? *

  12. #12
    Addicted Member
    Join Date
    May 2017
    Location
    Italy
    Posts
    170

    Re: How to call a sub by sender and e

    sample code
    Code:
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim dgv As New DataGridView
            AddHandler dgv.Click, AddressOf Cell_Click
            dgv.Name = "DGV 1"
            dgv.Dock = DockStyle.Fill
            dgv.RowTemplate.Height = 40
            dgv.ColumnCount = 3
            dgv.Columns(0).Name = "Name"
            dgv.Columns(1).Name = "Address"
            dgv.Columns(2).Name = "Phone"
            dgv.Rows.Add({"aaa", "bbb", "1000"})
            dgv.Rows.Add({"ccc", "ddd", "1111"})
            dgv.Rows.Add({"eee", "fff", "1234"})
            Me.Controls.Add(dgv)
        End Sub
        Private Sub Cell_Click(sender As Object, e As EventArgs)
            Dim tempView = DirectCast(sender, DataGridView)
            For Each cell As DataGridViewTextBoxCell In tempView.SelectedCells
                TextBox1.Text = CType(cell.Value, String)
            Next
            TextBox2.Text = tempView.Name
        End Sub

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width