代码之家  ›  专栏  ›  技术社区  ›  FlappySocks

带有复选框的.NET TreeView控件

  •  3
  • FlappySocks  · 技术社区  · 15 年前

    TreeView控件具有复选框属性,但它在每个节点上都放置了一个复选框。 如何只在所需节点上放置复选框?

    2 回复  |  直到 15 年前
        1
  •  3
  •   arbiter    15 年前

    使用 StateImageList TreeNode.StateImageIndex 为此目的。您还需要订阅mousedown事件,并在用户单击状态图像时更改检查状态(状态图像)。通过使用这种方法,您还可以模拟三个状态复选框。

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

    基于复选框状态为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;
    }
    
        2
  •  0
  •   Eric J.    15 年前

    我放弃了TreeView,因为它既有限又笨重。

    您应该能够使用开放源码使这种行为开箱即用 TreeViewAdv