0

例子:

有一个待处理的任务列表,每个任务都是 listView 中的一行,带有一个复选框。

当任务完成并检查以使特定任务的复选框不可见并保留记录时,是否有可能?

谢谢你。

在此处输入图像描述

4

1 回答 1

0

您也可以在复选框中给每个人ListViewItem一个ID。property如果Checkbox属于ListViewItem并且如果任务已完成并且如果选中了复选框,则可以隐藏此复选框。如果我理解正确,这是您需要的代码:

public class ListViewItemID : ListViewItem
{
    public int ID { get; set; }
}
public class CheckBoxID : CheckBox
{
    public int ID { get; set; }
}
public class program
{
    void Main()
    {
        var itemOne = new ListViewItemID { ID = 1 };
        var itemTwo = new ListViewItemID { ID = 2 };
        var checkBoxOne = new CheckBoxID { ID = itemOne.ID };
        checkBoxOne.CheckedChanged += HideCheckBox;
        var checkBoxTwo = new CheckBoxID { ID = itemTwo.ID };
        checkBoxTwo.CheckedChanged += HideCheckBox;
    }
    void HideCheckBox(object item, EventArgs e)
    {
        if (item.GetType() == typeof(CheckBoxID))
        {
            var checkBoxID = (CheckBoxID)item;

            foreach (ListViewItemID lItem in listViewItems.Where(lItem => lItem.ID == checkBoxID.ID && lItem.Text == "done" && checkBoxID.Checked))
            {
                checkBoxID.Visible = false;
            }
        }
        else if (item.GetType() == typeof(ListViewItemID))
        {
            var lItem = (ListViewItemID)item;
            foreach (var checkBox in Controls.Where(ctrl => ctrl.GetType() == typeof(CheckBoxID)).Select(ctrl => (CheckBoxID)ctrl).Where(checkBox => checkBox.ID == lItem.ID && checkBox.Checked && lItem.Text == "done"))
            {
                checkBox.Visible = false;
            }
        }
    }
于 2013-11-07T14:27:44.837 回答