It has been awhile since I've done any VB.net, but don't you need a WithEvents variable?
e.g.
Dim WithEvents ev As New EventClass
Sub TestEvents()
ev.RaiseEvents()
End Sub
Sub ev_EventHandler() Handles ev.XEvent, ev.YEvent
MsgBox("Received Event.")
End Sub
<%@ Page language="VB" %>
<script runat="server">
Sub CustomersGridView_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
' Get the currently selected row using the SelectedRow property.
Dim row As GridViewRow = CustomersGridView.SelectedRow
' Display the company name from the selected row.
' In this example, the third column (index 2) contains
' the company name.
Message.Text = "You selected " & row.Cells(2).Text & "."
End Sub
Sub CustomersGridView_SelectedIndexChanging(ByVal sender As Object, ByVal e As GridViewSelectEventArgs)
' Get the currently selected row. Because the SelectedIndexChanging event
' occurs before the select operation in the GridView control, the
' SelectedRow property cannot be used. Instead, use the Rows collection
' and the NewSelectedIndex property of the e argument passed to this
' event handler.
Dim row As GridViewRow = CustomersGridView.Rows(e.NewSelectedIndex)
' You can cancel the select operation by using the Cancel
' property. For this example, if the user selects a customer with
' the ID "ANATR", the select operation is canceled and an error message
' is displayed.
If row.Cells(1).Text = "ANATR" Then
e.Cancel = True
Message.Text = "You cannot select " + row.Cells(2).Text & "."
End If
End Sub
</script>
<html>
<body>
<form runat="server">
<h3>GridView Select Example</h3>
<asp:gridview id="CustomersGridView"
datasourceid="CustomersSource"
autogeneratecolumns="true"
autogenerateselectbutton="true"
allowpaging="true"
selectedindex="0"
onselectedindexchanged="CustomersGridView_SelectedIndexChanged"
onselectedindexchanging="CustomersGridView_SelectedIndexChanging"
runat="server">
<selectedrowstyle backcolor="LightCyan"
forecolor="DarkBlue"
font-bold="true"/>
</asp:gridview>
<br/>
<asp:label id="Message"
forecolor="Red"
runat="server"/>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. Use an ASP.NET -->
<!-- expression to retrieve the connection string value -->
<!-- from the Web.config file. -->
<asp:sqldatasource id="CustomersSource"
selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"/>
</form>
</body>
</html>