我有以下问题。我希望TreeList中选定的NodeCell周围的虚线边框包裹整行,而不是我点击的单元格。行的选择是好的(即,无论哪个单元被聚焦,整个行都被选中),但是我希望边框在点击它时突出显示整行而不是该行内的特定单元。我已经设定了:
treeList.OptionsSelection.EnableAppearanceFocusedCell = false;
但似乎我需要TreeList的一个属性,类似于GridView的属性,例如:
gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
我附上了一个截图来举例说明:
所选行以蓝色突出显示(正确),但边框突出显示特定单元格,但实际上选择了整行。我希望边界包裹整个行,而不仅仅是一个单元格。
答案 0 :(得分:1)
从DevExpress support forum开始 - 目前在XtraTree中没有FocusRectStyle
的等价物。
但是,如果您需要虚线边框 - 您可以自己绘制。
首先,设置treeList.OptionsSelection.EnableAppearanceFocusedCell = false;
接下来,定义笔,你想在你班级的某个地方绘制边框:
private readonly Pen _PenBorder = new Pen(Color.Black) {DashStyle = DashStyle.Dot};
最后,通过以下方式处理treeList.CustomDrawNodeCell
事件:
void TreeListCustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e)
{
if (e.Node.Focused)
{
e.Graphics.DrawLine(_PenBorder, e.Bounds.Left, e.Bounds.Top, e.Bounds.Right, e.Bounds.Top);
e.Graphics.DrawLine(_PenBorder, e.Bounds.Left, e.Bounds.Bottom - 1, e.Bounds.Right, e.Bounds.Bottom - 1);
if (e.Column.VisibleIndex == 0)
e.Graphics.DrawLine(_PenBorder, e.Bounds.Left, e.Bounds.Top, e.Bounds.Left, e.Bounds.Bottom);
if (e.Column.VisibleIndex == treeList.VisibleColumns.Count - 1)
e.Graphics.DrawLine(_PenBorder, e.Bounds.Right - 1, e.Bounds.Top, e.Bounds.Right - 1, e.Bounds.Bottom);
}
}