首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分层winform复选框

分层winform复选框
EN

Stack Overflow用户
提问于 2009-11-05 00:51:12
回答 2查看 1.5K关注 0票数 2

我在C# Winform上有一系列的复选框。每个复选框都可以有一些选项,这实际上是另一组复选框,只是在页面上缩进一点而已。

我试图实现的是,当您勾选其中一个父复选框时,它的所有子复选框都会被勾选。反之,当父复选框未勾选时,它的所有子复选框都不勾选。

然后我需要有它,这样如果一个子复选框被勾选,那么它就会勾选它的父复选框,或者至少确保父复选框被勾选。没有父母你就不能有孩子。如果某个子节点未勾选,则如果所有其他子节点都未勾选,则需要取消勾选父节点。

我是用复选框上的事件处理程序来做这件事的,但我遇到了这样一个问题,即用光标检查一个子对象,然后以编程方式检查父对象,然后以编程方式检查它所有的子对象。

我非常喜欢任何关于如何编程的建议,这样它就不会有这样的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-05 01:12:21

像这样的东西应该行得通。

代码语言:javascript
复制
    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBox1.Focused)
        {
            checkBox2.Checked = checkBox1.Checked;
            checkBox3.Checked = checkBox1.Checked;
            checkBox4.Checked = checkBox1.Checked;
        }
    }

    private void subCheckBox_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox theCheckbox = sender as CheckBox;
        if (theCheckbox.Focused)
        {
            checkBox1.Checked = checkBox2.Checked || checkBox3.Checked || checkBox4.Checked;
        }
    }

在我的示例中,复选框2、3和4都绑定到同一个处理程序。

希望这能有所帮助!

显然,这做了一些假设,因为它只是一个例子。我依靠用户输入(焦点属性)来控制流程。我相信,还有其他的解决方案。

票数 3
EN

Stack Overflow用户

发布于 2009-11-05 01:12:40

您还可以使用TreeView.CheckBoxes = true的treeview控件。这样,默认情况下,您就已经有了层次结构。

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

https://stackoverflow.com/questions/1675151

复制
相关文章

相似问题

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