我正在使用WinForms属性网格来显示对象的属性。但是,大多数属性都是只读的,因此显示为灰色而不是黑色。有没有办法自定义使用的颜色?我希望禁用的属性更容易阅读。
顺便说一句:我认为this question的答案可能与我正在尝试做的事情有关。但我不确定如何访问ControlPaint.DrawStringDisabled
。
答案 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
或任何其他绘画代码,它很可能会产生不良影响,或者没有任何影响。
您的选择是:
WndProc
并尝试拦截绘制消息(不保证可以正常工作)OnPaint
并将您的绘画放在首位(不保证可以正常工作)很抱歉,这可能不是您想要的答案,但我想不出更简单的方法。我从痛苦的经历中知道,这种事情很难修改。
答案 2 :(得分:0)
这是什么巫术? +1!我见过其他陷阱鼠标和键盘的解决方案。这是迄今为止最好,最简单的解决方案。这是我继承的只读控件的片段。
A
B
C
..
X
Y
Z
AA
AB
..
AZ
BA
BB
BC
..
ZY
ZZ
AAA
AAB
AAC
..
ALK
ALL