C# 我们可以在PropertyGrid中更改单个属性的文本/背景色吗
我有一个.NET PropertyGrid控件,它显示某个类的属性。我想更改某些属性的颜色、字体或背景色(它们看起来与其他显示的属性不同并不重要)。我可以编写自定义编辑器,但我想知道:C# 我们可以在PropertyGrid中更改单个属性的文本/背景色吗,c#,.net,user-interface,propertygrid,C#,.net,User Interface,Propertygrid,我有一个.NET PropertyGrid控件,它显示某个类的属性。我想更改某些属性的颜色、字体或背景色(它们看起来与其他显示的属性不同并不重要)。我可以编写自定义编辑器,但我想知道: 如果存在更简单的方法 如果我使用自定义编辑器,那么如何更改内置类型(如bool、int等)的编辑器 不行。确定如何绘制项目的类是PropertyGridView。源代码很有趣,它几乎做到了: private /*protected virtual*/ PropertyGridView CreateGrid
不行。确定如何绘制项目的类是PropertyGridView。源代码很有趣,它几乎做到了:
private /*protected virtual*/ PropertyGridView CreateGridView(IServiceProvider sp) {
return new PropertyGridView(sp, this);
}
不,看起来他们在最后一刻决定不让这个方法重写。PropertyGridView类也被标记为内部。替换所有这些代码(有很多)是不现实的选择
只有将[Editor]属性应用于要编辑的类中的属性,才能为内置类型创建自己的UITypeEditor。这不是一个普遍的解决办法。请考虑创建自己的表单,以使对象可编辑。我想在名称前加上“*”以表示差异,例如“*Font”而不是“Font”。我尝试使用反射,但displayName字段显示在调试器中,当更改生效时,我无法从反射中获取该字段。我使用的是正确的绑定标志,即BindingFlags.nonpublic我不确定我是否正确理解第一句话“No can do.”。作为一个非英语母语的人,我会想,应该写“不行”。我错过什么了吗?