2009-08-07 49 views

回答

3

使用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; 
} 
0

我放弃了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