Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我们可以在PropertyGrid中更改单个属性的文本/背景色吗_C#_.net_User Interface_Propertygrid - Fatal编程技术网

C# 我们可以在PropertyGrid中更改单个属性的文本/背景色吗

C# 我们可以在PropertyGrid中更改单个属性的文本/背景色吗,c#,.net,user-interface,propertygrid,C#,.net,User Interface,Propertygrid,我有一个.NET PropertyGrid控件,它显示某个类的属性。我想更改某些属性的颜色、字体或背景色(它们看起来与其他显示的属性不同并不重要)。我可以编写自定义编辑器,但我想知道: 如果存在更简单的方法 如果我使用自定义编辑器,那么如何更改内置类型(如bool、int等)的编辑器 不行。确定如何绘制项目的类是PropertyGridView。源代码很有趣,它几乎做到了: private /*protected virtual*/ PropertyGridView CreateGrid

我有一个.NET PropertyGrid控件,它显示某个类的属性。我想更改某些属性的颜色、字体或背景色(它们看起来与其他显示的属性不同并不重要)。我可以编写自定义编辑器,但我想知道:

  • 如果存在更简单的方法
  • 如果我使用自定义编辑器,那么如何更改内置类型(如bool、int等)的编辑器

  • 不行。确定如何绘制项目的类是PropertyGridView。源代码很有趣,它几乎做到了:

        private /*protected virtual*/ PropertyGridView CreateGridView(IServiceProvider sp) {
            return new PropertyGridView(sp, this);
        }
    
    不,看起来他们在最后一刻决定不让这个方法重写。PropertyGridView类也被标记为内部。替换所有这些代码(有很多)是不现实的选择


    只有将[Editor]属性应用于要编辑的类中的属性,才能为内置类型创建自己的UITypeEditor。这不是一个普遍的解决办法。请考虑创建自己的表单,以使对象可编辑。我想在名称前加上“*”以表示差异,例如“*Font”而不是“Font”。我尝试使用反射,但displayName字段显示在调试器中,当更改生效时,我无法从反射中获取该字段。我使用的是正确的绑定标志,即BindingFlags.nonpublic我不确定我是否正确理解第一句话“No can do.”。作为一个非英语母语的人,我会想,应该写“不行”。我错过什么了吗?