效果图如下:
代码如下:
Public Class DataGridViewTreeViewColumn
Inherits DataGridViewColumn
Public Sub New()
MyBase.New(New DataGridViewTreeViewCell)
End Sub
Public Overrides Property CellTemplate() As System.Windows.Forms.DataGridViewCell
Get
Return MyBase.CellTemplate
End Get
Set(ByVal value As System.Windows.Forms.DataGridViewCell)
If value IsNot Nothing And Not value.GetType.IsAssignableFrom(GetType(DataGridViewTreeViewCell)) Then
Throw New InvalidCastException("不是DataGridViewTreeViewCell")
End If
MyBase.CellTemplate = value
End Set
End Property
End Class
Public Class ComboBoxTreeView
Inherits ComboBox
Private Const WN_LBUTTONDOWN = &H201
Private Const WM_LBUTTONDBLCLK = &H203
Private treeViewHost As ToolStripControlHost
Private Shadows dropDown As ToolStripDropDown
Public Sub New()
Dim treeView As TreeView = New TreeView
AddHandler treeView.AfterSelect, AddressOf Me.treeView_AfterSelect
treeViewHost = New ToolStripControlHost(treeView)
dropDown = New ToolStripDropDown
dropDown.Width = Me.Width
dropDown.Items.Add(treeViewHost)
End Sub
Private Sub treeView_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs)
Me.Text = TreeView.SelectedNode.text
dropDown.Close()
End Sub
Public ReadOnly Property TreeView() As TreeView
Get
Return CType(treeViewHo

代码如下:
Public Class DataGridViewTreeViewColumn
Inherits DataGridViewColumn
Public Sub New()
MyBase.New(New DataGridViewTreeViewCell)
End Sub
Public Overrides Property CellTemplate() As System.Windows.Forms.DataGridViewCell
Get
Return MyBase.CellTemplate
End Get
Set(ByVal value As System.Windows.Forms.DataGridViewCell)
If value IsNot Nothing And Not value.GetType.IsAssignableFrom(GetType(DataGridViewTreeViewCell)) Then
Throw New InvalidCastException("不是DataGridViewTreeViewCell")
End If
MyBase.CellTemplate = value
End Set
End Property
End Class
Public Class ComboBoxTreeView
Inherits ComboBox
Private Const WN_LBUTTONDOWN = &H201
Private Const WM_LBUTTONDBLCLK = &H203
Private treeViewHost As ToolStripControlHost
Private Shadows dropDown As ToolStripDropDown
Public Sub New()
Dim treeView As TreeView = New TreeView
AddHandler treeView.AfterSelect, AddressOf Me.treeView_AfterSelect
treeViewHost = New ToolStripControlHost(treeView)
dropDown = New ToolStripDropDown
dropDown.Width = Me.Width
dropDown.Items.Add(treeViewHost)
End Sub
Private Sub treeView_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs)
Me.Text = TreeView.SelectedNode.text
dropDown.Close()
End Sub
Public ReadOnly Property TreeView() As TreeView
Get
Return CType(treeViewHo