Cerrar formulario desde una clase fuera del formulario
Amigos tengo una aplicación en visual studio 2012 (visual basic), y sql server 2019. Todo bien. Quiero diseñar restricciones a Usuarios, desde una Tbl_UsuariosPermisos defino el nombre del Form y el Acceso (False, True), con su mantenimiento y todo bien. Ahora debo diseñar una Clase (Permiso), desde la cual al darle Click a abrir desde el FormInicio (MDI), en el evento cargar del FormArqueoCaja llamo a la clase Permiso, y me ejecuta todo bien, busco el IdUsuario, nombre de Formulario en la Tbl_UsuariosPermisos, y hasta en un mensaje me pasa los datos para corroborar... Ahora el tema es que si el bPermisoFor= False quiero cerrar el Formulario con el sNombreFormulario. Copio el código que uso para un apoyo. Gracias expertos.
Public Sub Permiso(sNombreFormulario As String) ' PERMISOS DE USUARIOS
If CONNM.State = ConnectionState.Closed Then
CONNM.Open()
End If
On Error GoTo No_tienes_acceso
Dim bPermisoFor As String
Dim datos As New SqlDataAdapter("Select Acceso FROM Tbl_UsuariosPermisos WHERE IdUsuario= '" & nIdUsuario & "' AND NombreFormulario= '" & sNombreFormulario & "'", CONNM) 'Con un Si o No, en variable "bPermisoFor" tomamos una decisión.
Dim ds As New DataSet()
datos.Fill(ds)
bPermisoFor = ds.Tables(0).Rows(0)("Acceso")
MsgBox("IdUsuario: " & nIdUsuario & vbCrLf & "Formulario: " & sNombreFormulario & vbCrLf & "Acceso:" & bPermisoFor)
If bPermisoFor = False Then 'Informamos al usuario y le cerramos el formulario.
MsgBox("No tienes permiso para este formulario: " & sNombreFormulario & vbCrLf & "Contacte con el administrador", vbCritical, "Sistema le informa: Lo siento")
Form.Close() 'AQUÌ LA AYUDA PARA CERRAR EL FORMULARIO CON NOMBRE CARGADO EN sNombreFormulario
End If
Exit Sub
No_tienes_acceso:
MsgBox("Lo siento, ha sucedido un error." & vbCrLf & " " & "¡Consulta con el Administrador", vbInformation, "Sistema le informa")
Resume Next
'Logicamente si la variable es SI no hacemos nada y dejamos que el formulario abrirse
If CONNM.State = ConnectionState.Open Then
CONNM.Close()
End If
End Sub