示例:
列出待处理的任务列表,每个任务都是带有复选框的listView中的一行。
任务完成时是否可能&选中以使复选框不可见 具体任务并保留记录当然?
谢谢。
答案 0 :(得分:0)
您可以为每个ListViewItem
property
ID提供一个ID,也可以在复选框中。如果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;
}
}
}