当前位置:编程学习 > C#/ASP.NET >>

vb.net用splitter控件如何实现隐藏左右面板

vb.net用splitter控件如何实现隐藏左右面板 --------------------编程问答-------------------- 怎么没有人来回答啊 --------------------编程问答-------------------- 首先创建一个类,用来实现显示/隐藏其他控件
Public Class mysplitter
Public Shared Sub addshowhideevent(ByVal sl As Splitter)
Dim lbl As New Label
lbl.text = "3"
lbl.Font = New System.drawing.Font("marlett", 7.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(2, Byte))
lbl.autosize = True
lbl.Location = New Point(CInt(-4), CInt(sl.Height / 2 - lbl.Height))
lbl.cursor = cursors.hand
lbl.forecolor = color.red
sl.controls.add(lbl)
sl.Width = CInt(4)
AddHandler lbl.Click, AddressOf lbl_click
AddHandler sl.resize, AddressOf splitter_resize
Dim tt As New ToolTip
tt.SetToolTip(lbl, "隐藏左边的的控件")
lbl.Tag = tt
End Sub
Private Shared Sub lbl_click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim lbl As Label = CType(sender, Label)
Dim targetctrl As Control
Dim sl As Splitter = CType(lbl.parent, Splitter)
Dim pctrl As Control = sl.parent
For Each temp As Control In pctrl.controls
If Not temp.equals(sl) Then
If sl.dock = dockstyle.left Then
If temp.dock = dockstyle.left AndAlso (Not temp.visible OrElse temp.left < sl.left) Then
targetctrl = temp
Exit For
End If
ElseIf sl.Dock = DockStyle.Top Then
If temp.Dock = DockStyle.Top AndAlso (Not temp.Visible OrElse temp.Top < sl.Top) Then
targetctrl = temp
Exit For
End If
End If
End If
Next
If Not targetctrl Is Nothing Then
Dim tt As ToolTip = CType(lbl.Tag, ToolTip)
If lbl.Text = "3" Then
lbl.Text = "4"
tt.SetToolTip(lbl, "显示左边的的控件")
targetctrl.Visible = False
Else
lbl.Text = "3"
tt.SetToolTip(lbl, "隐藏左边的的控件")
targetctrl.Visible = True
End If
End If
End Sub
Private Shared Sub splitter_resize(ByVal sender As Object, ByVal e As System.EventArgs)
Dim sl As Splitter = CType(sender, Splitter)
Dim lbl As Label = CType(sl.Controls(0), Label)
lbl.Location = New Point(CInt(-4), CInt(sl.Height / 2 - lbl.Height))
End Sub
End Class
使用时,在窗体的初始化代码中加入如下所示的代码即可:
    Public Sub New()
        MyBase.New()
        '该调用是 Windows 窗体设计器所必需的。
        InitializeComponent()
        '在 InitializeComponent() 调用之后添加任何初始化
      mySplitter.AddShowHideEvent(Me.Splitter1)
    End Sub 
--------------------编程问答-------------------- 创建一个MySplitter类,在里面加入如下代码即可(注意要修改图片路径,Splitter和lbl的大小)
Public Class MySplitter
    '定义一个显示/隐藏树目录的类
    '定义一个用于判断树目录当前是否显示的变量
    Shared isShow As Boolean

    '定义一个添加显示/隐藏树目录的方法
    Public Shared Sub addshowhideevent(ByVal sl As Splitter)
        Dim lbl As New Label
        isShow = False
        lbl.AutoSize = False
        lbl.Location = New Point(0, 0)
        lbl.Size = New Size(20, 20)
        lbl.Image = Image.FromFile("图标\\Back.png")
        lbl.Cursor = Cursors.Hand
        sl.Controls.Add(lbl)
        sl.Width = CInt(20)
        AddHandler lbl.Click, AddressOf lbl_click
        AddHandler sl.Resize, AddressOf splitter_resize
        Dim tt As New ToolTip
        tt.SetToolTip(lbl, "隐藏树目录")
        lbl.Tag = tt
    End Sub

    '给标签的单击添加事件
    Private Shared Sub lbl_click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim lbl As Label = CType(sender, Label)
        Dim targetctrl As Control = New Control()
        Dim sl As Splitter = CType(lbl.Parent, Splitter)
        Dim pctrl As Control = sl.Parent
        For Each temp As Control In pctrl.Controls
            If Not temp.Equals(sl) Then
                If sl.Dock = DockStyle.Left Then
                    If temp.Dock = DockStyle.Left AndAlso (Not temp.Visible OrElse temp.Left < sl.Left) Then
                        targetctrl = temp
                        Exit For
                    End If
                ElseIf sl.Dock = DockStyle.Top Then
                    If temp.Dock = DockStyle.Top AndAlso (Not temp.Visible OrElse temp.Top < sl.Top) Then
                        targetctrl = temp
                        Exit For
                    End If
                End If
            End If
        Next
        If Not targetctrl Is Nothing Then
            Dim tt As ToolTip = CType(lbl.Tag, ToolTip)
            If isShow = False Then
                isShow = True
                tt.SetToolTip(lbl, "显示树目录")
                lbl.Image = Image.FromFile("图标\\Forward.png")
                targetctrl.Visible = False
            Else
                isShow = False
                tt.SetToolTip(lbl, "隐藏树目录")
                targetctrl.Visible = True
                lbl.Image = Image.FromFile("图标\\Back.png")
            End If
        End If
    End Sub

    '给Splitter控件的大小改变时添加事件
    Private Shared Sub splitter_resize(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim sl As Splitter = CType(sender, Splitter)
        Dim lbl As Label = CType(sl.Controls(0), Label)
        lbl.Location = New Point(CInt(-4), CInt(sl.Height / 2 - lbl.Height))
    End Sub
End Class


//在Form_Load事件中添加调用上面类中方法的代码
MySplitter.addshowhideevent(Me.Splitter1)     '调用自定义的方法实现显示/隐藏树目录
MySplitter.addshowhideevent(Me.Splitter2)     '调用自定义的方法实现显示/隐藏树目录 --------------------编程问答-------------------- 折叠左边栏:
MySplitContainer.Panel1Collapsed = True
显示左边栏:
MySplitContainer.Panel1Collapsed = False
折叠右边栏:
MySplitContainer.Panel2Collapsed = True
显示右边栏:
MySplitContainer.Panel2Collapsed = False
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,