C# 使特定复选框在列表视图中可见
示例: 具有挂起的任务列表,并且每个任务都是列表视图中带有复选框的一行 是否可以在任务完成并选中时使复选框不可见 具体的任务,当然要保留记录 多谢各位C# 使特定复选框在列表视图中可见,c#,winforms,C#,Winforms,示例: 具有挂起的任务列表,并且每个任务都是列表视图中带有复选框的一行 是否可以在任务完成并选中时使复选框不可见 具体的任务,当然要保留记录 多谢各位 您可以在复选框中为每个ListViewItem指定属性ID。如果复选框属于列表视图项,并且如果任务已完成且复选框已选中,则可以隐藏此复选框。如果我没弄错,这是你需要的代码吗: public class ListViewItemID : ListViewItem { public int ID { get; set; } } public
您可以在复选框中为每个
ListViewItem
指定属性ID。如果复选框
属于列表视图项
,并且如果任务已完成且复选框已选中,则可以隐藏此复选框。如果我没弄错,这是你需要的代码吗:
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;
}
}
}
你能用例子解释一下吗。@Sudhakar:希望这有帮助:)我想你会被困在这里,你可能需要自己画这些项目,这里有一个参考链接。它是为CheckedListBox
,而不是为ListView
,但其思想是相同的。您也可以先尝试搜索,我怀疑是否有一些有用的示例。复选框的父项是什么?@KingKing我想他使用的是标准的Windows.Forms.Button
——而不是ListViewItem
。我不明白这个答案如何解决这个问题。而无休止的循环听起来是一种糟糕的做法。