2013-12-19 65 views
1

我正在编写一个用户可以扩展和收缩的自定义控件。为了获得最直观的用户体验,我想使用用户以前可能遇到的plusminus图标。它们可用于TreeView控制,所以理论上我应该能够直接访问它们以进行控制。我只是不知道如何。使用TreeView的加号和减号图标

+0

只需使用ImageButtons并在线搜索免费的折叠/展开图标。编辑:Nvm,你已经有了图标,只需使用ImageButton控件,或者简单的图像控件 –

+0

@HanletEscaño我觉得在我的应用程序中包含已经在用户硬盘上的图像是一种糟糕的形式。尽管它们的大小可能不重要。 – Fr33dan

+0

包含图像的按钮在此处不会提供最佳体验。我会在代码中的自定义控件中绘制 - 但请放心,这不是一件容易的事情。在代码项目中寻找示例/教程... – MoonKnight

回答

3

您可以尝试使用VisualStyle classes为:

using System.Windows.Forms.VisualStyles; 

protected override void OnPaint(PaintEventArgs e) { 
    VisualStyleRenderer treeClose = new VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Closed); 
    treeClose.DrawBackground(e.Graphics, new Rectangle(16, 16, 16, 16)); 
    TextRenderer.DrawText(e.Graphics, "Closed Branch", SystemFonts.DefaultFont, new Point(32, 16), Color.Black); 

    VisualStyleRenderer treeOpen = new VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Opened); 
    treeOpen.DrawBackground(e.Graphics, new Rectangle(16, 32, 16, 16)); 
    TextRenderer.DrawText(e.Graphics, "Opened Branch", SystemFonts.DefaultFont, new Point(32,32), Color.Black); 

    base.OnPaint(e); 
} 

enter image description here

如果VISUALSTYLES不支持您的应用程序,你就必须自己手动绘制它们,这是不是太硬。一个矩形,中间加上一两条线。

+0

我知道必须有某种方法来绘制它而不添加任何图像,因为它是一个常见的显示元素。它的工作原理与我所期待的有所不同,但这正是我想要的。 – Fr33dan

相关问题