0

标题可能没有我在这里能做的那么有意义。

假设我有 5 个复选框。对于每一个我想要一个复选框,我可以单击以选中/取消选中相应复选框中的所有元素。

我可以通过在检查/取消选中列表中所有元素的每个复选框上使用 CheckedChanged 轻松做到这一点。但我想为每个列表创建一个函数。我该怎么做?我在想一些类似的事情

    private void internalModsChkAll_CheckedChanged(object sender, EventArgs e)
    {
        testfunktion("internalModsChkAll", "internalModsChkList");
    }

    private void testfunktion(string from, string to) 
    {
        if ([from].Checked == true)
        {
            for (int i = 0; i < [to].Items.Count; i++)
            {
                [to].SetItemChecked(i, true);
            }
        }
        else
        {
            for (int i = 0; i < [to].Items.Count; i++)
            {
                [to].SetItemChecked(i, false);
            }
        }
    }

我希望你能看到我想在这里做什么..但是上面的不起作用:(

有什么建议么 ?

4

2 回答 2

0

假设 WinForms,我认为您正在寻找 Controls.Find() 和演员:

    private void testfunktion(string from, string to) 
    {  
        Control[] matches = this.Controls.Find(from, true);
        if (matches.Length > 0 && matches[0] is CheckBox)
        {
            CheckBox CB = (CheckBox)matches[0];
            matches = this.Controls.Find(to, true);
            if (matches.Length > 0 && matches[0] is CheckedListBox)
            {
                CheckedListBox CLB = (CheckedListBox)matches[0];
                for (int i = 0; i < CLB.Items.Count; i++)
                {
                    CLB.SetItemChecked(i, CB.Checked);
                }    
            }
        }
    }
于 2013-11-05T21:48:58.370 回答
0

正如lazyberezovsky 所建议的,这里的代码与原始帖子中的代码相同,但可以正常工作,供其他人查看:-)

    private void internalModsChkAll_CheckedChanged(object sender, EventArgs e)
    {
        checkAll(internalModsChkAll, internalModsChkList);
    }

    public void checkAll(CheckBox from, CheckedListBox to) 
    {
        if (from.Checked == true)
        {
            for (int i = 0; i < to.Items.Count; i++)
            {
                to.SetItemChecked(i, true);
            }
        }
        else
        {
            for (int i = 0; i < to.Items.Count; i++)
            {
                to.SetItemChecked(i, false);
            }
        }
    }
于 2013-11-05T22:08:26.437 回答