相关疑难解决方法(0)

VisualStyleRenderer和主题(WinForms)

我有自己的TreeView控件,完全是OwnerDraw'n:

  myTreeView.DrawMode = TreeViewDrawMode.OwnerDrawAll;
Run Code Online (Sandbox Code Playgroud)

我试图实现的是根据当前的资源管理器主题绘制打开/关闭的字形.特别是在Vista和Win7盒子上,我希望看到新的支架(黑色三角形)而不是加号/减号.我知道,对于非OwnerDraw'n TreeView,这可以通过以下方式实现:

  myTreeView.HandleCreated += delegate(object sender, EventArgs args)
  {
     MyNativeMethods.SetWindowTheme(myTreeView.Handle, "explorer", null);
  };
Run Code Online (Sandbox Code Playgroud)

我认为VisualStyleRenderer让我绘制主题感知的字形:

  VisualStyleRenderer r = new VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Opened);
  r.DrawBackground(e.Graphics, e.Bounds);
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的代码在所有情况下都会绘制减号.看起来VisualStyleRenderer不尊重主题设置.

有人可以对此有所了解吗?谢谢!

.net winforms

12
推荐指数
1
解决办法
6397
查看次数

标签 统计

.net ×1

winforms ×1