devexpress如何隐藏PropertyGridControl中的编辑器(Editor)

hide row value cell(editor) in devexpress PropertyGridControl(VerticalGrid)

Posted by 王帅 on September 29, 2021

引言

PropertyGridControl有两种视图模式(ActiveViewType),经典和office

如果使用office视图(经典视图为Grid展示方式,因此无法隐藏,只能自定义ExpandableObjectConverter,具体可参考CourseConverter)绑定一个前文:devexpress如何在PropertyGridControl中直接编辑集合成员中的对象结果就是这样:

office view

现在,ListCourses这个对象已经被展开了,所以它的集合编辑器没那么必要,如果我想要把这个Editor去掉,有什么办法吗?

解决方案

官方并没有针对这个问题提供简单的解决方案,但是它有CustomDrawRowValueCell事件

这个事件可以自定义Editor

所以,问题就比较简单了;只需要不绘制Cell即可达到隐藏控件的目的

private void PropertyGridControl1_CustomDrawRowValueCell(object sender, DevExpress.XtraVerticalGrid.Events.CustomDrawRowValueCellEventArgs e)
{
    if(e.Row.Properties.FieldName== nameof(Student.ListCourses))
    {
        e.Properties.AllowEdit = false;//解决点击编辑框位置时Editor出现的问题
        e.Handled = true;//不执行绘制操作即可隐藏编辑器
    }
}

效果如图:

hide collection editor

参考资料