您的位置:首页 > 其它

自定义控件之节点为下拉列表框的树型控件

2007-06-14 16:22 309 查看
效果图如下:



代码如下:




Public Class DropDownTreeViewClass DropDownTreeView


Inherits TreeView




Private WithEvents m_CurrentNode As DropDownTreeNode = Nothing






Protected Overrides Sub OnNodeMouseClick()Sub OnNodeMouseClick(ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs)


If e.Node.GetType.ToString.Equals("DropDownTreeNode") Then


Me.m_CurrentNode = CType(e.Node, DropDownTreeNode)


Me.Controls.Add(Me.m_CurrentNode.ComboBox)


Me.m_CurrentNode.ComboBox.SetBounds(Me.m_CurrentNode.Bounds.X - 1, _


Me.m_CurrentNode.Bounds.Y - 2, _


Me.m_CurrentNode.Bounds.Width + 25, _


Me.m_CurrentNode.Bounds.Height)




AddHandler Me.m_CurrentNode.ComboBox.SelectedValueChanged, AddressOf Me.ComboBox_SelectedValueChanged


AddHandler Me.m_CurrentNode.ComboBox.DropDownClosed, AddressOf Me.ComboBox_DropDownClosed




Me.m_CurrentNode.ComboBox.Show()


Me.m_CurrentNode.ComboBox.DroppedDown = True


End If


MyBase.OnNodeMouseClick(e)


End Sub






Protected Overrides Sub OnMouseWheel()Sub OnMouseWheel(ByVal e As System.Windows.Forms.MouseEventArgs)


HideComboBox()


MyBase.OnMouseWheel(e)


End Sub






Private Sub ComboBox_SelectedValueChanged()Sub ComboBox_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs)


HideComboBox()


End Sub






Private Sub ComboBox_DropDownClosed()Sub ComboBox_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs)


HideComboBox()


End Sub






Private Sub HideComboBox()Sub HideComboBox()


If Me.m_CurrentNode IsNot Nothing Then


RemoveHandler Me.m_CurrentNode.ComboBox.DropDownStyleChanged, AddressOf Me.ComboBox_DropDownClosed


RemoveHandler Me.m_CurrentNode.ComboBox.SelectedValueChanged, AddressOf Me.ComboBox_SelectedValueChanged




Me.m_CurrentNode.Text = Me.m_CurrentNode.ComboBox.Text


Me.m_CurrentNode.ComboBox.Hide()


Me.m_CurrentNode.ComboBox.DroppedDown = False


Me.Controls.Remove(Me.m_CurrentNode.ComboBox)


Me.m_CurrentNode = Nothing


End If


End Sub




End Class








Public Class DropDownTreeNodeClass DropDownTreeNode


Inherits TreeNode




Private m_ComboBox As ComboBox = New ComboBox






Public Sub New()Sub New()


MyBase.New()


End Sub






Public Sub New()Sub New(ByVal text As String)


MyBase.New(text)


End Sub






Public Sub New()Sub New(ByVal text As String, ByVal children As TreeNode())


MyBase.New(text, children)


End Sub






Public Property ComboBox()Property ComboBox() As ComboBox


Get


m_ComboBox.DropDownStyle = ComboBoxStyle.DropDownList


Return m_ComboBox


End Get


Set(ByVal value As ComboBox)


m_ComboBox = value


m_ComboBox.DropDownStyle = ComboBoxStyle.DropDownList


End Set


End Property




End Class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: