buenas noches vengo a pedir de se ayuda
estoy trabajando con un menu dinamico desde la bd y todo bien armo el menu segun el usuario.
el problema es que no encontrado la forma de armar el llamado del frm de forma dinamica,
por el momento creo una funcion por frm para mostrar pero me gustaría saber si se puede
hacer una función para llamar a todos los frm por medio de ella
hasta el momento este es el codigo que tengo y que me esta funcionando
se arma el menu
Private Sub menus1()
Try
cn.Open()
Dim IDMP As Integer
Dim Dt As New DataTable
Dim Dadapter As SqlDataAdapter
Dim menu = New SqlCommand("SP_MENU_DINAMICO", cn)
menu.CommandType = CommandType.StoredProcedure
menu.Parameters.AddWithValue("@IdRol", CInt(Trim(codirol.Text)))
Dadapter = New SqlDataAdapter(menu)
Dadapter.Fill(Dt)
Dim categorias As New ToolStripMenuItem()
For Each row As DataRow In Dt.Rows
categorias = New ToolStripMenuItem(CStr(row("Descripcion")))
IDMP = CInt(row("IdMenu"))
' MenuStrip1.Items.Add(categorias)
Dim Dt1 As New DataTable
Dim Dadapter1 As SqlDataAdapter
Dim menu1 = New SqlCommand("SP_MENU_DINAMICO_OPCIONES", cn)
menu1.CommandType = CommandType.StoredProcedure
menu1.Parameters.AddWithValue("@IdRol", CInt(Trim(codirol.Text)))
menu1.Parameters.AddWithValue("@IdMenuPadre", IDMP)
Dadapter1 = New SqlDataAdapter(menu1)
Dadapter1.Fill(Dt1)
For Each row1 As DataRow In Dt1.Rows
Dim opciones As New ToolStripMenuItem(CStr(row1("Descripcion")))
categorias.DropDownItems.Add(opciones)
AddHandler opciones.Click, AddressOf windowNewMenu_Click
MenuStrip1.Items.Add(categorias)
Next
Next
cn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, "Mensaje", MessageBoxButtons.OK)
cn.Close()
Finally
End Try
End Sub
Public Sub windowNewMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Try
CallByName(Me, CType(sender, ToolStripMenuItem).Text, CallType.Method)
Catch ex As Exception
End Try
End Sub
funcion para mostrar el frm la cual creo por todos los frm
Public Sub NUEVO_PROVEEDOR()
If Application.OpenForms("Frm_Proveedores") IsNot Nothing Then
' form is opened, so activate it
'MessageBox.Show("Ventana ya está abierta")
Application.OpenForms("Frm_Proveedores").Activate()
Else
Dim FORMULARIO As New Frm_Proveedores
FORMULARIO.MdiParent = Me
FORMULARIO.Dock = DockStyle.Fill
FORMULARIO.Text = " NUEVO PROVEEDOR"
FORMULARIO.Show()
End If
End Sub
estaré muy agradecido por su ayuda, ya que yo u tu al ya no ayo que hacer ya estuve pro van do codigos que estan en inter