C# 列表视图控制问题

C# 列表视图控制问题,c#,winforms,listview,checkbox,C#,Winforms,Listview,Checkbox,我有一个Listview控件“lstStudents”,我在列表视图控件中添加了复选框。我需要添加一个全选复选框,这将导致选中Listview中的所有复选框。我使用以下代码,但它不起作用 private void chkAll_CheckedChanged(object sender, EventArgs e) { foreach (Control cont in lstStudents.Controls) { if (cont

我有一个Listview控件“lstStudents”,我在列表视图控件中添加了复选框。我需要添加一个全选复选框,这将导致选中Listview中的所有复选框。我使用以下代码,但它不起作用

  private void chkAll_CheckedChanged(object sender, EventArgs e)
    {
        foreach (Control cont in lstStudents.Controls)
        {
            if (cont.GetType() == typeof(CheckBox))
            {
                (cont as CheckBox).Checked = true;
            }

        }
    }
我正在使用c#windows窗体……

尝试以下方法:

private void chkAll_CheckedChanged(object sender, EventArgs e)
{
    foreach (ListViewDataItem item in lstStudents.Items)
    {
        CheckBox cbSelect = item.FindControl("cbSelect") as CheckBox;
        if (cbSelect != null)
        {
            cbSelect.Checked = true;
        } 
     }
 }
假设您的listview定义如下所示:

<asp:listview runat="server">
    <itemtemplate>
        <asp:checkbox id="cbSelect" runat="server" />
    </itemtemplate>
</asp:listview>

您与的是数据项,而不是控件本身

    private void chkAll_CheckedChanged(object sender, EventArgs e)
    {
        foreach (ListViewItem item in lstStudents.Items)
        {
            item.Checked = chkAll.Checked;
        }
    }
  • 无论是否可见,都可以在ListViewItem上访问Checked属性
  • lstStudents.Items仅返回ListViewItem
因此,不需要对这些项目进行额外的参考验证