已选中节点概述
要启用节点选择,则把 TreeListOptionsSelection.MultiSelect 属性设置为 true。 在节点选择模式中,您或最终用户可以选择连续的和非连续的节点范围。
已选中节点被以特定的样式突出显示。 可以使用 TreeListAppearanceCollection.SelectedRow 属性来定制已选中节点的外观。 当 TreeList 控件没有获得焦点时,TreeListAppearanceCollection.HideSelectionRow 属性指定已选中节点的外观。
如果启用了 TreeListOptionsBehavior.KeepSelectedOnClick 选项,则在编辑已选中节点内的单元格时,选择状态被保持。
使用鼠标和键盘选择节点
要使用鼠标选择多个节点,最终用户必须使用 SHIFT 或 CTRL 按键。 要选择连续的节点范围,则单击该范围的第一个节点。 然后,按下 SHIFT 键并且单击该范围的最后一个节点。 要选择特定的节点 (并添加到已有的选择),则按下 CTRL 键单击节点。
在按下 CTRL 键时单击节点,则切换节点的选择状态,把已选中状态改变为未选中状态,反之亦然。
如果启用了 TreeListOptionsSelection.UseIndicatorForSelection 属性,则 节点指示器面板 可以用于选择节点。 在这种情况下,最终用户可以沿指示器拖动鼠标来选择节点范围,或者在按下 CTRL 键时单击特定节点的指示器单元格来切换该节点的选择状态。
关于选择节点的其他方法,请参阅 选择节点 主题。
在代码中选择节点
可以通过 TreeList.Selection 属性在代码中选择节点。 此属性允许访问当前已选中的节点,并且选择或取消选择某些节点。
要对节点选择改变作出响应,可以接管 TreeList.SelectionChanged 事件。
示例
下列代码演示了如何遍历已选中的节点,以便于展开它们。 通过 TreeList.Selection 属性访问已选中的节点。
C# | ![]() |
---|---|
for(int i = 0; i < treeList1.Selection.Count; i++) { treeList1.Selection[i].Expanded = true; } |
Visual Basic | ![]() |
---|---|
Dim i As Integer For i = 0 To TreeList1.Selection.Count - 1 TreeList1.Selection(i).Expanded = True Next i |
示例
下列代码展示了如何选择特定节点的子节点。 在本示例中,通过 TreeList.Selection 对象的 TreeListMultiSelection.Set 方法选中节点。
下面的插图展示了 Sales and Marketing 节点的子节点的选择结果。

C# | ![]() |
---|---|
using DevExpress.XtraTreeList.Nodes; // ... void selectSpecificNode() { ArrayList selectedNodes = new ArrayList(); selectChildren(treeList1.Nodes[0].Nodes[0], selectedNodes); treeList1.Selection.Set(selectedNodes); } void selectChildren(TreeListNode parent, ArrayList selectedNodes) { IEnumerator en = parent.Nodes.GetEnumerator(); TreeListNode child; while(en.MoveNext()) { child = (TreeListNode)en.Current; selectedNodes.Add(child); if(child.HasChildren) selectChildren(child, selectedNodes); } } |
Visual Basic | ![]() |
---|---|
Imports DevExpress.XtraTreeList.Nodes ' ... Sub SelectSpecificNode() Dim selectedNodes As ArrayList = New ArrayList() selectChildren(TreeList1.Nodes(0).Nodes(0), selectedNodes) TreeList1.Selection.Set(selectedNodes) End Sub Sub SelectChildren(ByVal parent As TreeListNode, ByVal selectedNodes As ArrayList) Dim en As IEnumerator = parent.Nodes.GetEnumerator() Dim child As TreeListNode While en.MoveNext() = True child = CType(en.Current, TreeListNode) selectedNodes.Add(child) If child.HasChildren = True Then selectChildren(child, selectedNodes) End If End While End Sub |