【问题标题】:.NET TreeView control with checkboxes.NET 带有复选框的 TreeView 控件
【发布时间】:2009-08-07 20:52:48
【问题描述】:

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

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我放弃了 TreeView,因为它有限且有缺陷。

      您应该能够使用开源 TreeViewAdv 开箱即用地获得此行为

      【讨论】:

      • 您在 TreeView 中遇到了哪些错误?
      • 其实原生 TreeView 是非常强大的,但是你需要做很多检查,因为 TreeView 会随着每一个新的 windows 发布而发展并获得新的功能。 .Net 树视图包装器并没有使用所有的 TreeView 潜力,对于许多高级功能,您需要子类化。
      • 已经有一段时间了,但我记得一个错误是事件在某些情况下没有触发。
      猜你喜欢
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多