dynamicmenu.vb
来自「Samples are organized by chapter, and th」· VB 代码 · 共 277 行
VB
277 行
Imports System.Data.SqlClient
Public Class DynamicMenu
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents mnuMain As System.Windows.Forms.MainMenu
Friend WithEvents mnuFile As System.Windows.Forms.MenuItem
Friend WithEvents mnuOpen As System.Windows.Forms.MenuItem
Friend WithEvents mnuSave As System.Windows.Forms.MenuItem
Friend WithEvents mnuExit As System.Windows.Forms.MenuItem
Friend WithEvents mnuTools As System.Windows.Forms.MenuItem
Friend WithEvents mnuManageHardware As System.Windows.Forms.MenuItem
Friend WithEvents mnuSetupUserAccounts As System.Windows.Forms.MenuItem
Friend WithEvents mnuChangeDisplay As System.Windows.Forms.MenuItem
Friend WithEvents mnuHelp As System.Windows.Forms.MenuItem
Friend WithEvents mnuContents As System.Windows.Forms.MenuItem
Friend WithEvents mnuAbout As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem12 As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem13 As System.Windows.Forms.MenuItem
Friend WithEvents mnuNew As System.Windows.Forms.MenuItem
Friend WithEvents mnuClose As System.Windows.Forms.MenuItem
Friend WithEvents cmdUser As System.Windows.Forms.Button
Friend WithEvents cmdAdmin As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.mnuMain = New System.Windows.Forms.MainMenu()
Me.mnuFile = New System.Windows.Forms.MenuItem()
Me.mnuNew = New System.Windows.Forms.MenuItem()
Me.mnuOpen = New System.Windows.Forms.MenuItem()
Me.mnuClose = New System.Windows.Forms.MenuItem()
Me.mnuSave = New System.Windows.Forms.MenuItem()
Me.MenuItem12 = New System.Windows.Forms.MenuItem()
Me.mnuExit = New System.Windows.Forms.MenuItem()
Me.mnuTools = New System.Windows.Forms.MenuItem()
Me.mnuManageHardware = New System.Windows.Forms.MenuItem()
Me.mnuSetupUserAccounts = New System.Windows.Forms.MenuItem()
Me.mnuChangeDisplay = New System.Windows.Forms.MenuItem()
Me.mnuHelp = New System.Windows.Forms.MenuItem()
Me.mnuContents = New System.Windows.Forms.MenuItem()
Me.MenuItem13 = New System.Windows.Forms.MenuItem()
Me.mnuAbout = New System.Windows.Forms.MenuItem()
Me.cmdUser = New System.Windows.Forms.Button()
Me.cmdAdmin = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
'mnuMain
'
Me.mnuMain.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuFile, Me.mnuTools, Me.mnuHelp})
'
'mnuFile
'
Me.mnuFile.Index = 0
Me.mnuFile.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuNew, Me.mnuOpen, Me.mnuClose, Me.mnuSave, Me.MenuItem12, Me.mnuExit})
Me.mnuFile.Text = "File"
'
'mnuNew
'
Me.mnuNew.Index = 0
Me.mnuNew.Text = "New"
'
'mnuOpen
'
Me.mnuOpen.Index = 1
Me.mnuOpen.Text = "Open"
'
'mnuClose
'
Me.mnuClose.Index = 2
Me.mnuClose.Text = "Close"
'
'mnuSave
'
Me.mnuSave.Index = 3
Me.mnuSave.Text = "Save"
'
'MenuItem12
'
Me.MenuItem12.Index = 4
Me.MenuItem12.Text = "-"
'
'mnuExit
'
Me.mnuExit.Index = 5
Me.mnuExit.Text = "Exit"
'
'mnuTools
'
Me.mnuTools.Index = 1
Me.mnuTools.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuManageHardware, Me.mnuSetupUserAccounts, Me.mnuChangeDisplay})
Me.mnuTools.Text = "Tools"
'
'mnuManageHardware
'
Me.mnuManageHardware.Index = 0
Me.mnuManageHardware.Text = "Manage Hardware"
'
'mnuSetupUserAccounts
'
Me.mnuSetupUserAccounts.Index = 1
Me.mnuSetupUserAccounts.Text = "Setup User Accounts"
'
'mnuChangeDisplay
'
Me.mnuChangeDisplay.Index = 2
Me.mnuChangeDisplay.Text = "Change Display"
'
'mnuHelp
'
Me.mnuHelp.Index = 2
Me.mnuHelp.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuContents, Me.MenuItem13, Me.mnuAbout})
Me.mnuHelp.Text = "Help"
'
'mnuContents
'
Me.mnuContents.Index = 0
Me.mnuContents.Text = "Contents"
'
'MenuItem13
'
Me.MenuItem13.Index = 1
Me.MenuItem13.Text = "-"
'
'mnuAbout
'
Me.mnuAbout.Index = 2
Me.mnuAbout.Text = "About"
'
'cmdUser
'
Me.cmdUser.FlatStyle = System.Windows.Forms.FlatStyle.System
Me.cmdUser.Location = New System.Drawing.Point(12, 68)
Me.cmdUser.Name = "cmdUser"
Me.cmdUser.Size = New System.Drawing.Size(80, 24)
Me.cmdUser.TabIndex = 0
Me.cmdUser.Text = "User Level"
'
'cmdAdmin
'
Me.cmdAdmin.FlatStyle = System.Windows.Forms.FlatStyle.System
Me.cmdAdmin.Location = New System.Drawing.Point(100, 68)
Me.cmdAdmin.Name = "cmdAdmin"
Me.cmdAdmin.Size = New System.Drawing.Size(80, 24)
Me.cmdAdmin.TabIndex = 1
Me.cmdAdmin.Text = "Admin Level"
'
'DynamicMenu
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 14)
Me.ClientSize = New System.Drawing.Size(200, 105)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.cmdAdmin, Me.cmdUser})
Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Menu = Me.mnuMain
Me.Name = "DynamicMenu"
Me.Text = "Dynamic Menu"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub DynamicMenu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cmdUser_Click(Nothing, Nothing)
End Sub
Private Sub SearchMenu(ByVal Menu As Menu, ByVal dtPermissions As DataTable)
Dim RowMatch() As DataRow
Dim mnuItem As MenuItem
For Each mnuItem In Menu.MenuItems
' See if this menu item has a corresponding row.
RowMatch = dtPermissions.Select("ControlName = '" & mnuItem.Text & "'")
' If it does, configure the menu item state accordingly.
If RowMatch.GetLength(0) > 0 Then
Select Case RowMatch(0)("State")
Case DBPermissions.State.Hidden
mnuItem.Visible = False
Case DBPermissions.State.Disabled
mnuItem.Enabled = False
End Select
Else
mnuItem.Visible = True
mnuItem.Enabled = True
End If
' Search recursively through any submenus.
If mnuItem.MenuItems.Count > 0 Then
SearchMenu(mnuItem, dtPermissions)
End If
Next
End Sub
Private Sub cmdUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUser.Click
Dim dtPermissions As DataTable = DBPermissions.GetPermissions(DBPermissions.Level.User)
SearchMenu(Me.Menu, dtPermissions)
End Sub
Private Sub cmdAdmin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAdmin.Click
Dim dtPermissions As DataTable = DBPermissions.GetPermissions(DBPermissions.Level.Admin)
SearchMenu(Me.Menu, dtPermissions)
End Sub
End Class
Public Class DBPermissions
Enum State
Normal = 0
Disabled = 1
Hidden = 2
End Enum
Enum Level
Admin
User
End Enum
Private Shared con As New SqlConnection("Data Source=localhost;" & _
"Integrated Security=SSPI;Initial Catalog=Apress;")
Public Shared Function GetPermissions(ByVal UserLevel As Level) As DataTable
con.Open()
Dim SelectPermissions As String = "SELECT * FROM Permissions "
Select Case UserLevel
Case Level.Admin
SelectPermissions &= "WHERE LevelName = 'Admin'"
Case Level.User
SelectPermissions &= "WHERE LevelName = 'User'"
End Select
Dim cmd As New SqlCommand(SelectPermissions, con)
Dim adapter As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
adapter.Fill(ds, "Permissions")
con.Close()
Return ds.Tables("Permissions")
End Function
End Class
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?