Самый простой способ вызвать событие с пользовательскими данными - объявить и вызвать пользовательское событие. Это новое событие может быть запущено в обработчике событий _CellClick вашего DataGridView
. Такое отделение от DataGridView поможет изолировать и изолировать любые будущие изменения.
SelectedValueEventArgs class
Создайте этот класс для хранения информации о событии, которую вы хотите передать в родительскую форму, в вашем случае, Form1
Public Class SelectedValueEventArgs
Inherits EventArgs
Public Sub New(rs As ADODB.RecordSet, i As Integer)
RecordSet = rs
Index = i
End Sub
Public Property RecordSet As ADODB.RecordSet
Public Property Index As Integer
End Class
Объявление события SelectedValueChanged
Объявите событие, которое вы хотите вызвать, с соответствующим именем. Я пошел на SelectedValueChanged. Это событие должно быть объявлено в вашем Form2 class
Public Event SelectedValueChanged As EventHandler(Of SelectedValueEventArgs)
Поднять событие
В обработчике события _CellClick объекта DataGridView установите аргументы событий и создайте новое событие
Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
Dim rs As ADODB.RecordSet = ' Set your ADOBB.RecordSet here
Dim i As Integer = e.RowIndex
Dim eventArgs As New SelectedValueEventArgs(rs, i)
OnSelectedValueChanged(eventArgs)
End Sub
' This function will do the hard work of raising the event to parent forms
Protected Overridable Sub OnSelectedValueChanged(e As SelectedValueEventArgs)
RaiseEvent SelectedValueChanged(Me, e)
End Sub
Обработка события в родительской форме
Наконец, в родительской форме (Form1) , когда вы показываете Form2 , добавляете обработчик для вновь созданного / опубликованного события и затем выполняете необходимое действие в обработчике событий. ( form2_SelectedValueChanged )
Private Sub btnButton1_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
Dim f As New Form2
AddHandler f.SelectedValueChanged, AddressOf form2_SelectedValueChanged
f.Show()
End Sub
Private Sub form2_SelectedValueChanged(sender As Object, e As SelectedValueEventArgs)
Debug.Print(e.Index)
End Sub