Listview控件问题

时间:2010-09-19 05:52:02

标签: c# winforms listview checkbox

我有一个Listview控件“lstStudents”,我在List viewControl中添加了复选框。我需要添加一个Select All复选框,导致检查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 Forms ......

2 个答案:

答案 0 :(得分:2)

您正在与数据项而不是控件本身交谈

    private void chkAll_CheckedChanged(object sender, EventArgs e)
    {
        foreach (ListViewItem item in lstStudents.Items)
        {
            item.Checked = chkAll.Checked;
        }
    }
  • Checked属性始终可以在ListViewItem上访问,可见或不可见。
  • lstStudents.Items仅返回ListViewItem

所以不需要对这些项目进行额外的参考验证

答案 1 :(得分:1)

试试这个:

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>