Hola
Giufantasy lo que haces esta bien, solo lo que tendrias que hacer es controlar los formularios en cada evento al que seleccionas de esta manera :
Código vb.net:
Ver originalDim dt As New DataTable
Dim da As New SqlDataAdapter
'Ejecutando procedimiento para codigos de barra.
Dim cmd As New SqlCommand
cmd.CommandType = Data.CommandType.StoredProcedure
cmd.CommandText = "SP_BUSCA_FORMULARIOS_X_MENU"
cmd.Connection = SQLcnn
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@RUT", RutUsuario)
cmd.Parameters.AddWithValue("@SISTEMA", CodigoSistema)
cmd.Parameters.AddWithValue("@MENU", NombreCabecera)
cmd.ExecuteNonQuery()
da = New SqlDataAdapter(cmd)
da.Fill(dt)
Dim vlim As Short = CShort(dt.Rows.Count - 1)
Dim vposi As Short
For vposi = 0 To vlim
mnuSubOpcion
= New ToolStripMenuItem
(Trim(dt
.Rows(vposi
).Item("DESCRI PCION").ToString()))mnuSubOpcion
.Tag = Trim(dt
.Rows(vposi
).Item("DESCRIPCION").ToString() )mnuSubOpcion.Image = Imagen.Images(1)
mnuSubOpcion.TextAlign = ContentAlignment.TopCenter
NombreSubmenu
= Trim(dt
.Rows(vposi
).Item("MENU").ToString())mnuSubOpcion.ForeColor = Color.Blue
'Añadir Opcion
menuOpcion.DropDownItems.Add(mnuSubOpcion)
'Esto va dentro para que se asignen a todos, si lo pones fuera solo agrega al ultimo
AddHandler mnuSubOpcion.Click, AddressOf LevantaFormulario
Next
tu evento LevantaFormulario :
Código vb.net:
Ver originalPublic Sub LevantaFormulario()
'Extraigo el nombre del control seleccionado
Select Case Me.ActiveControl.Name.ToString
'Comparo si es igual a :
Case "form1"
Dim x as new Form1
x.Show()
Case "form2"
Dim y as new Form2
y.Show()
End Select
End Sub
Trata de asignar nombres a tus subitems para que hagas la comparacion. Saludos!