У меня есть собственный элемент управления TreeView, который полностью принадлежит OwnerDraw'n:
myTreeView.DrawMode = TreeViewDrawMode.OwnerDrawAll;
То, что я пытаюсь достичь, - это нарисовать открытый/закрытый глиф в соответствии с текущей темой исследователя. Особенно в Vista и Win7 я бы хотел видеть новые глифы (черные треугольники) вместо знаков плюс/минус. Я знаю, что для не-OwnerDraw'n TreeView это может быть достигнуто следующим образом, которое отлично работает:
myTreeView.HandleCreated += delegate(object sender, EventArgs args)
{
MyNativeMethods.SetWindowTheme(myTreeView.Handle, "explorer", null);
};
Я думал, что VisualStyleRenderer позволяет мне рисовать значки с символикой:
VisualStyleRenderer r = new VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Opened);
r.DrawBackground(e.Graphics, e.Bounds);
Приведенный выше код, к сожалению, рисует знак минус во всех случаях. Похоже, что VisualStyleRenderer не соблюдает настройки темы.
Может кто-то пролить свет на это? Спасибо!