在TreeList DevExpress中选择时,为整行设置边框

时间:2014-10-02 11:47:36

标签: c# winforms gridview devexpress

我有以下问题。我希望TreeList中选定的NodeCell周围的虚线边框包裹整行,而不是我点击的单元格。行的选择是好的(即,无论哪个单元被聚焦,整个行都被选中),但是我希望边框在点击它时突出显示整行而不是该行内的特定单元。我已经设定了:

treeList.OptionsSelection.EnableAppearanceFocusedCell = false;

但似乎我需要TreeList的一个属性,类似于GridView的属性,例如:

gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;

我附上了一个截图来举例说明:

enter image description here

所选行以蓝色突出显示(正确),但边框突出显示特定单元格,但实际上选择了整行。我希望边界包裹整个行,而不仅仅是一个单元格。

1 个答案:

答案 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);
    }
}