带有复选框的.NET TreeView控件

问题描述:

TreeView控件具有复选框属性,但它会在每个节点上放置一个复选框。 如何将复选框放在我想要的节点上?带有复选框的.NET TreeView控件

使用StateImageListTreeNode.StateImageIndex上述目的使用该框。当用户点击状态图像时,您还需要订阅MouseDown事件并更改检查状态(状态图像)。通过使用这种方法,您也可以模拟三态复选框。

实际上,内部的TreeView实现实际上使用相同的方法,但是这对你是隐藏的。

private Image CreateCheckBoxGlyph(CheckBoxState state) 
{ 
    Bitmap Result = new Bitmap(imlCheck.ImageSize.Width, imlCheck.ImageSize.Height); 
    using (Graphics g = Graphics.FromImage(Result)) 
    { 
     Size GlyphSize = CheckBoxRenderer.GetGlyphSize(g, state); 
     CheckBoxRenderer.DrawCheckBox(g, 
      new Point((Result.Width - GlyphSize.Width)/2, (Result.Height - GlyphSize.Height)/2), state); 
    } 
    return Result; 
} 

我放弃了TreeView,因为它是有限的和越野车。

你应该能够得到这种行为了使用开源TreeViewAdv

+2

你在TreeView中遇到什么错误:

用于创建基于CheckBoxState的ImageList中图像的方法? – 2009-08-07 21:14:08

+0

实际上,本机TreeView功能非常强大,但是您需要进行多次检查,因为TreeView在每个新的Windows版本中都会演变并获得新功能。 .Net树视图包装器不会使用所有的TreeView潜能,并且对于许多您需要继承的高级功能。 – arbiter 2009-08-07 21:40:19

+0

这已经有一段时间了,但我记得的一个错误是在某些情况下不会发射的事件。 – 2009-08-07 22:46:58