自定义控件之节点为下拉列表框的树型控件
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
代码如下:
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
相关文章推荐
- 自定义控件之带有树型控件的下拉列表框
- 类库-----一些经常用到的对控件的处理1. 获取文本框中输入内容2.清除文本框内容3. 获取下拉列表框中选择内容,类型0为Text值,类型1为Value值4.DropDownList绑定日期
- 可输入的Web下拉列表框控件
- 树型控件中目录与子节点检查框同步选择
- 无限级下拉列表框控件
- 树型控件中目录与子节点检查框同步选择
- Select控件实现联动下拉列表框效果
- [自定义服务器控件] 第二步:下拉列表框。
- 可输入的Web下拉列表框控件
- 树型控件中目录与子节点检查框同步选择
- 树型控件中目录与子节点检查框同步选择
- CComboBox控件的下拉列表框,用鼠标在该ListBox上滑动的时候显示出当前具有focus的item项的索引
- MFC下拉列表框(Combox)控件使用方法
- 无限级下拉列表框控件
- 树型控件中目录与子节点检查框同步选择
- 树型控件中目录与子节点检查框同步选择
- 创建一个带分组功能的下拉列表框控件
- 最简单的方法在DataGrid中自定义样式列(通过继承可以在Datagrid中使用下拉列表框,日期控件等)
- 树型节点与数据库的动态连接(asp.net 2.0 TreeView控件的使用)
- 简单使用COMBO(下拉列表框)控件