首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinForms TreeView中的三态复选框

WinForms TreeView中的三态复选框
EN

Stack Overflow用户
提问于 2011-04-12 02:51:38
回答 3查看 19.5K关注 0票数 14

我有一个TreeView,它允许用户通过选中或取消选中每个项目的复选框来选择分层数据的某些元素。目前,我在具有使用checkbox hiding technique from another question的子节点上禁用了该框,如下所示:

代码语言:javascript
复制
☑ Node 1
☐ Node 2
• Node 3
  ☑ Node 3.1
  ☑ Node 3.2
• Node 4
  ☐ Node 4.1
  ☑ Node 4.2

但更好的解决方案是对父节点使用三态复选框,如下所示:

代码语言:javascript
复制
☑ Node 1
☐ Node 2
☑ Node 3
  ☑ Node 3.1
  ☑ Node 3.2
☒ Node 4
  ☐ Node 4.1
  ☑ Node 4.2

由于此功能在Win32中可用,我的问题是如何在不自己绘制框的情况下做到这一点(例如,作为用户绘制的控件或using an image list)。我对Win32应用编程接口一点也不熟悉;如何扩展上面链接的技术来在托管TreeView控件上启用三态复选框?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-12 02:57:39

你看过this吗?它似乎能完成这项工作。这可能有点过时,(看起来这篇文章来自2004年),但我相信同样的原则可以扩展到你需要做的任何事情。

票数 2
EN

Stack Overflow用户

发布于 2011-04-12 06:23:38

如果您正在考虑绘制“混合”复选框,则此代码可能会对您有所帮助

代码语言:javascript
复制
class MixedCheckBox:Control
{
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        CheckBoxRenderer.DrawCheckBox(e.Graphics, new Point(0, 0), Bounds, 
            Text, Font, false, 
            System.Windows.Forms.VisualStyles.CheckBoxState.MixedNormal);
    }
}

这将呈现:

祝好运!

票数 13
EN

Stack Overflow用户

发布于 2012-05-25 18:57:09

现在,在Code Project中有了一个外观整洁的解决方案,Tri-State Tree View

我现在只是在研究,所以还没有使用它。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5626031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档