Detectando el evento de cambio de tabla de datos en VB.
El objetivo de esta pregunta es crear un bloque de código que se ejecute cuando un datatable ha cambiado su contenido (solo el hecho de que ha cambiado, no la fila o columna específica). Esto es en VB Winforms NET.
Esto funciona:
Public Class Form1
Sub testhandler()
Dim locallyDeclaredDT as new datatable
AddHandler locallyDeclaredDT.ColumnChanged, New DataColumnChangeEventHandler(AddressOf Column_Changed)
End Sub
Private Shared Sub Column_Changed(sender As Object, e As DataColumnChangeEventArgs)
MessageBox.Show("La tabla ha cambiado")
End Sub
End Class
Pero necesito un datatable que sea accesible fuera del alcance de los sub entonces intento esto, lo cual no funciona.
Public Class Form1
Dim globallyDeclaredDT as new datatable
Sub testhandler()
AddHandler globallyDeclaredDT.ColumnChanged, New DataColumnChangeEventHandler(AddressOf Column_Changed)
End Sub
Private Shared Sub Column_Changed(sender As Object, e As DataColumnChangeEventArgs)
MessageBox.Show("La tabla ha cambiado")
End Sub
End Class
El problema es causado por la línea AddHandler: la propiedad ColumnChanged está subrayada y el error es
‘ColumnChanged’ no es un evento de ‘Object’.
¿Cómo puedo solucionar esto?
davy.ai
El problema es que
globallyDeclaredDT
no es del tipoDataTable
, por lo que el eventoColumnChanged
no está disponible. Para solucionarlo, debe declarargloballyDeclaredDT
como unDataTable
: