更改propertygrid中只读属性的前景色

时间:2010-08-06 00:48:55

标签: c# .net winforms propertygrid

我正在使用WinForms属性网格来显示对象的属性。但是,大多数属性都是只读的,因此显示为灰色而不是黑色。有没有办法自定义使用的颜色?我希望禁用的属性更容易阅读。

顺便说一句:我认为this question的答案可能与我正在尝试做的事情有关。但我不确定如何访问ControlPaint.DrawStringDisabled

3 个答案:

答案 0 :(得分:12)

这个问题有一个简单的解决方案。

只需减少RGB中的R for for for colorGrid,就像这样:

Me.PropertyGrid2.ViewForeColor = Color.FromArgb(1, 0, 0)

此功能仅适用于黑色。

答案 1 :(得分:1)

不幸的是,没有内置的方法来改变颜色。与许多标准的.NET控件一样,它们只是它们的COM等价物的包装版本。

这在实践中意味着很多,如果不是所有的绘画都是由COM组件完成的,那么如果你尝试重写.NET OnPaint方法并调用ControlPaint.DrawStringDisabled或任何其他绘画代码,它很可能会产生不良影响,或者没有任何影响。

您的选择是:

  1. 从头开始构建自定义控件(可能是最简单的)
  2. 覆盖WndProc并尝试拦截绘制消息(不保证可以正常工作)
  3. 尝试覆盖OnPaint并将您的绘画放在首位(不保证可以正常工作)
  4. 很抱歉,这可能不是您想要的答案,但我想不出更简单的方法。我从痛苦的经历中知道,这种事情很难修改。

答案 2 :(得分:0)

这是什么巫术? +1!我见过其他陷阱鼠标和键盘的解决方案。这是迄今为止最好,最简单的解决方案。这是我继承的只读控件的片段。

  A
  B
  C 
  ..
  X
  Y
  Z
  AA
  AB
  ..
  AZ
  BA
  BB
  BC
  ..
  ZY
  ZZ
  AAA
  AAB
  AAC
  ..
  ALK
  ALL