Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使特定复选框在列表视图中可见_C#_Winforms - Fatal编程技术网

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
。我不明白这个答案如何解决这个问题。而无休止的循环听起来是一种糟糕的做法。