带有复选框的.NET TreeView控件

时间:2009-08-07 20:52:49

标签: c# .net winforms

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

2 个答案:

答案 0 :(得分:3)

出于此目的,请使用StateImageListTreeNode.StateImageIndex。当用户单击状态图像时,您还需要订阅MouseDown事件并更改检查状态(状态图像)。通过使用此方法,您还可以模拟三态复选框。

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

基于CheckBoxState为ImageList创建图像的方法:

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;
}

答案 1 :(得分:0)

我放弃了TreeView,因为它是有限的和错误的。

您应该能够使用开源TreeViewAdv

开箱即用