Winforms 关闭Aero时绘制展开/折叠按钮(+;/-)

Winforms 关闭Aero时绘制展开/折叠按钮(+;/-),winforms,gdi+,Winforms,Gdi+,对于视觉样式,我可以使用 VisualStyleElement.TreeView.Glyph.Closed 和VisualStyleRenderer来绘制[+]按钮,就像在TreeView中一样 但当用户在Windows中具有“经典””样式时,不支持视觉样式,我仍然需要绘制此图示符 仍然可以使用如下类 System.Windows.Forms.CheckBoxRenderer 但是我还没有找到类似于TreeView标志符号的任何内容。是的,不可能获得该标志符号。这是一个简单的方法,但您必须编

对于视觉样式,我可以使用

VisualStyleElement.TreeView.Glyph.Closed
VisualStyleRenderer来绘制[+]按钮,就像在TreeView中一样

但当用户在Windows中具有“经典””样式时,不支持视觉样式,我仍然需要绘制此图示符

仍然可以使用如下类

System.Windows.Forms.CheckBoxRenderer

但是我还没有找到类似于TreeView标志符号的任何内容。

是的,不可能获得该标志符号。这是一个简单的方法,但您必须编写代码。绘制矩形和绘制线。或者使用位图。或者让它看起来像简单的Vista三角形。或者在禁用视觉样式时不启用ownerdraw。

是的,无法获取该图示符。这是一个简单的方法,但您必须编写代码。绘制矩形和绘制线。或者使用位图。或者让它看起来像简单的Vista三角形。或者在禁用视觉样式时不启用ownerdraw。

MS使用自定义绘制在PropertyGrid中绘制此图示符,因此在禁用视觉样式时似乎无法绘制本机+/-图示符。您是如何使用VSE.TreeView.glyph.Closed绘制图示符的。NET总是拒绝用一个信息来画它,当前的主题不支持这一部分,最终我不得不自己包装这个主题,我没有。我深入研究了.NET Framework参考源代码,找到了System.Windows.Forms.PropertyGridInternal.PaintOutline(图形,矩形)方法,它在PropertyGrid中绘制展开按钮图示符。当VisualStyleRenderer.IsSupported或VisualStyleRenderer.IsElementDefined返回false时,这是必需的。@确切地说,PaintOutline是位于System.Windows.Forms.dll.MS中的System.Windows.Forms.PropertyGridInternal.GridEntry类中的一个方法,它使用自定义绘制在PropertyGrid中绘制此标志符号,因此,在禁用视觉样式时,似乎不可能绘制本机+/-图示符。您是如何使用VSE.TreeView.glyph.Closed绘制图示符的。NET总是拒绝用一个信息来画它,当前的主题不支持这一部分,最终我不得不自己包装这个主题,我没有。我深入研究了.NET Framework参考源代码,找到了System.Windows.Forms.PropertyGridInternal.PaintOutline(图形,矩形)方法,它在PropertyGrid中绘制展开按钮图示符。当VisualStyleRenderer.IsSupported或VisualStyleRenderer.IsElementDefined返回false时,这是必需的。@确切地说,PaintOutline是System.Windows.Forms.PropertyGridInternal.GridEntry类中的一个方法,位于System.Windows.Forms.dll中。