vb.net 2005 动态加载菜单及反射+权限
来源:互联网 发布:linux chmod 只读 编辑:程序博客网 时间:2024/05/17 06:49
Imports System.Reflection
Public Class Form1Class Form1
Public userflag As Object = "1,2,3,4,5,7,8"
Private Sub Form1_FormClosing()Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Application.Exit()
End Sub
Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized
AddMenu(userflag)
End Sub
Private Sub openform()Sub openform(ByVal sender As Object, ByVal e As EventArgs)
Dim asm As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly()
Dim frm As New Form
frm = CType(asm.CreateInstance("WindowsApplication1." + CType(sender, ToolStripMenuItem).Tag.ToString), Form)
'CType(asm.CreateInstance("项目名称." + CType(sender, ToolStripMenuItem).Tag.ToString), Form)
frm.Text = sender.ToString
frm.WindowState = FormWindowState.Maximized
If OpenOnce(frm) = False Then
frm.MdiParent = Me
frm.Show()
End If
End Sub
Private Sub AddMenu()Sub AddMenu(ByVal userflag As Object)
Dim ms As New MenuStrip()
For j As Integer = 0 To 4
Dim windowMenu As New ToolStripMenuItem("主菜单" & j)
For i As Integer = 1 To 10
Dim windowNewMenu As New ToolStripMenuItem("我的菜单" & i, Nothing)
AddHandler windowNewMenu.Click, AddressOf openform
windowNewMenu.Tag = "Form" & i '以这里获得窗体的路径
flag(userflag, windowNewMenu, i)
windowMenu.DropDownItems.Add(windowNewMenu)
CType(windowMenu.DropDown, ToolStripDropDownMenu).ShowImageMargin = False
CType(windowMenu.DropDown, ToolStripDropDownMenu).ShowCheckMargin = False
ms.Items.Add(windowMenu)
ms.Dock = DockStyle.Top
Me.MainMenuStrip = ms
Me.Controls.Add(ms)
Next
Next
End Sub
Public Function OpenOnce()Function OpenOnce(ByVal myform As Form) As Boolean
Dim form As Form
For Each form In Me.MdiChildren
If form.Text = myform.Text Then
form.Activate()
Return True
End If
Next
Return False
End Function
Private Function flag()Function flag(ByVal userflag As Object, ByVal MenuN As Object, ByVal i As Integer)
userflag = Split(userflag, ",")
For k As Integer = 0 To UBound(userflag)
With MenuN
If userflag(k) - i = 0 Then
.Enabled = True
Exit For
Else
.Enabled = False
End If
End With
Next
Return Nothing
End Function
End Class
Public Class Form1Class Form1
Public userflag As Object = "1,2,3,4,5,7,8"
Private Sub Form1_FormClosing()Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Application.Exit()
End Sub
Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized
AddMenu(userflag)
End Sub
Private Sub openform()Sub openform(ByVal sender As Object, ByVal e As EventArgs)
Dim asm As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly()
Dim frm As New Form
frm = CType(asm.CreateInstance("WindowsApplication1." + CType(sender, ToolStripMenuItem).Tag.ToString), Form)
'CType(asm.CreateInstance("项目名称." + CType(sender, ToolStripMenuItem).Tag.ToString), Form)
frm.Text = sender.ToString
frm.WindowState = FormWindowState.Maximized
If OpenOnce(frm) = False Then
frm.MdiParent = Me
frm.Show()
End If
End Sub
Private Sub AddMenu()Sub AddMenu(ByVal userflag As Object)
Dim ms As New MenuStrip()
For j As Integer = 0 To 4
Dim windowMenu As New ToolStripMenuItem("主菜单" & j)
For i As Integer = 1 To 10
Dim windowNewMenu As New ToolStripMenuItem("我的菜单" & i, Nothing)
AddHandler windowNewMenu.Click, AddressOf openform
windowNewMenu.Tag = "Form" & i '以这里获得窗体的路径
flag(userflag, windowNewMenu, i)
windowMenu.DropDownItems.Add(windowNewMenu)
CType(windowMenu.DropDown, ToolStripDropDownMenu).ShowImageMargin = False
CType(windowMenu.DropDown, ToolStripDropDownMenu).ShowCheckMargin = False
ms.Items.Add(windowMenu)
ms.Dock = DockStyle.Top
Me.MainMenuStrip = ms
Me.Controls.Add(ms)
Next
Next
End Sub
Public Function OpenOnce()Function OpenOnce(ByVal myform As Form) As Boolean
Dim form As Form
For Each form In Me.MdiChildren
If form.Text = myform.Text Then
form.Activate()
Return True
End If
Next
Return False
End Function
Private Function flag()Function flag(ByVal userflag As Object, ByVal MenuN As Object, ByVal i As Integer)
userflag = Split(userflag, ",")
For k As Integer = 0 To UBound(userflag)
With MenuN
If userflag(k) - i = 0 Then
.Enabled = True
Exit For
Else
.Enabled = False
End If
End With
Next
Return Nothing
End Function
End Class
- vb.net 2005 动态加载菜单及反射+权限
- .Net动态加载插件-反射
- [VB.NET源码]14_动态菜单
- vb.net winform动态生成菜单(源码)
- Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载
- Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载
- Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载
- Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载
- VB.Net程序设计:动态添加右键菜单和子菜单
- VB.NET中动态加载Treeview节点
- VB.NET中动态加载Treeview节点
- VB.NET实现动态加载控件数组
- [VB.NET]动态加载自定义控件!!
- 动态类加载及反射演示类
- VB 2005 Toolstrip动态添加菜单
- vb.net学习总结一(动态菜单)
- VB.net 动态添加菜单响应单击事件
- [vb.net/mobile/移动编程]选中动态生成的菜单
- 若干技术博客列表
- 解决到sql2005Express,ASPNET.MDF到sql2005的迁徙
- java运行环境配置
- 基于ASP.NET AJAX技术开发在线RSS阅读器(上篇)
- 基于ASP.NET AJAX技术开发在线RSS阅读器(下篇)
- vb.net 2005 动态加载菜单及反射+权限
- js刷新父页面
- 交行信用卡不支持在国外网站上支付
- Tomcat5.5配置连接池
- ajax用法大全
- 孙未勤的HibernateUtil
- atlas学习系列之二
- 经商名言
- 从小工到大工8