vb.net侧边栏图形菜单

来源:互联网 发布:英国厨师知乎 编辑:程序博客网 时间:2024/05/20 14:17

VB6时代,做侧边栏菜单非常困难,一般都要用到第三方控件,但是在VB.net中,做侧边栏图形菜单非常方便,先看效果:
这里写图片描述
这是菜单选中效果:
这里写图片描述
这些菜单都是用Label控件做的,容器是用的Panel控件,用的代码很少,具体做法:

1、拖放一个panel控件在窗体左边,设置BackgroundImage属性,加入一张漂亮的背景图,设置BackgroundImageLayout属性,有平铺、居中、缩放,自己选一个合适的。BorderStyle属性设为None,Dock属性为Left,自动绑定到窗体左边。

2、放置Label控件在Panel之上,拉到合适大小(拉不动就把AutoSize设为False),与Panel左右边对齐,将背景色设置为透明,边框设置为None,FlatStyle设置为Popup,image属性加入图标文件,我用的是38*38的真彩图标,ImageAlign向左对齐,TextAlign设为中右对齐,Text文本后面带两个空格,例如”软件运行 “,这样做为了让菜单文本不至于靠在最边上。

3、加入代码:

Private lblMenu As Object = Nothing '鼠标移动的前一菜单项    Private MenuSelect As Object = Nothing '鼠标点击的前一菜单项    Private Sub Menu_Click(sender As System.Object, e As System.EventArgs) Handles _    Label1.Click, Label2.Click, Label3.Click, Label4.Click, Label5.Click, Label6.Click, Label7.Click        If MenuSelect IsNot Nothing Then            MenuSelect.forecolor = Color.White '前面选择的菜单项前景色变为白色        End If        sender.forecolor = Color.Chartreuse  '当前选择的菜单项前景色为亮绿色        MenuSelect = sender  '保存当前选择菜单项        Select Case sender.name.ToString            Case "Label1"                MessageBox.Show("你点击了Label1")            Case "Label2"                MessageBox.Show("你点击了Label2")        End Select    End Sub    Private Sub Menu_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles _    Label1.MouseDown, Label2.MouseDown, Label3.MouseDown, Label4.MouseDown, Label5.MouseDown, Label6.MouseDown, Label7.MouseDown        sender.BorderStyle = BorderStyle.FixedSingle  '鼠标按下菜单效果    End Sub    Private Sub Menu_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles _    Label1.MouseUp, Label2.MouseUp, Label3.MouseUp, Label4.MouseUp, Label5.MouseUp, Label6.MouseUp, Label7.MouseUp        sender.BorderStyle = BorderStyle.None  '鼠标抬起取消菜单效果    End Sub    Private Sub Menu_MouseEnter(sender As Object, e As System.EventArgs) Handles _    Label1.MouseEnter, Label2.MouseEnter, Label3.MouseEnter, Label4.MouseEnter, Label5.MouseEnter, Label6.MouseEnter, Label7.MouseEnter        If lblMenu IsNot Nothing Then            Call Menu_MouseLeave(lblMenu, e)  '前一菜单项恢复初始状态        End If        sender.backcolor = Color.DeepSkyBlue  '鼠标进入菜单范围的效果:背景色变深蓝        lblMenu = sender  '保存当前进入菜单项    End Sub    Private Sub Menu_MouseLeave(sender As Object, e As System.EventArgs) Handles _    Label1.MouseLeave, Label2.MouseLeave, Label3.MouseLeave, Label4.MouseLeave, Label5.MouseLeave, Label6.MouseLeave, Label7.MouseLeave        sender.backcolor = Color.Transparent  '鼠标离开菜单项恢复默认效果,背景色透明        sender.BorderStyle = BorderStyle.None  '菜单项边框取消        lblMenu = Nothing  '删除保存的菜单项    End Sub
0 0
原创粉丝点击