例子:
有一个待处理的任务列表,每个任务都是 listView 中的一行,带有一个复选框。
当任务完成并检查以使特定任务的复选框不可见并保留记录时,是否有可能?
谢谢你。
您也可以在复选框中给每个人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;
}
}
}