如何将复选框添加到c#Winform应用程序中的列表视图列标题?

San*_*nur 3 c# checkbox listview winforms

在此输入图像描述

我想在标题中添加复选框,如果我在标题复选框中选中它应该像选择全部并取消选择全部...就像上面的图像一样!

在此输入图像描述

我想用c#中的复选框创建这种类型的listview标题

Rez*_*aei 11

您可以将OwnerDrawproperty 设置ListView为true并绘制ChceckBox第一列标题和句柄ColumnClick以执行select/deselect all.

  • 为了绘制ListView你需要处理DrawColumnHeader,DrawItemDrawSubItem事件.

  • DrawColumnHeader事件中绘制复选框.

  • 设置e.DrawDefault = true;其他绘图事件以绘制默认渲染.
  • 处理ColumnClick事件并将列标题的已检查状态存储在列标记中.同样对于列表视图的每个项目,设置Checked属性以执行select/deselect all.

码:

private void listView1_DrawColumnHeader(object sender, 
                                        DrawListViewColumnHeaderEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        e.DrawBackground();
        bool value = false;
        try
        {
            value = Convert.ToBoolean(e.Header.Tag);
        }
        catch (Exception)
        {
        }
        CheckBoxRenderer.DrawCheckBox(e.Graphics, 
            new Point(e.Bounds.Left + 4, e.Bounds.Top + 4),
            value ? System.Windows.Forms.VisualStyles.CheckBoxState.CheckedNormal :
            System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedNormal);
    }
    else
    {
        e.DrawDefault = true;
    }
}

private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
    e.DrawDefault = true;
}

private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
    e.DrawDefault = true;
}

private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
    if (e.Column == 0)
    {
        bool value = false;
        try
        {
            value = Convert.ToBoolean(this.listView1.Columns[e.Column].Tag);
        }
        catch (Exception)
        {
        }
        this.listView1.Columns[e.Column].Tag = !value;
        foreach (ListViewItem item in this.listView1.Items)
            item.Checked = !value;

        this.listView1.Invalidate();
    }
}
Run Code Online (Sandbox Code Playgroud)

截图:

在此输入图像描述

  • 在上面的图像中我有3列.
  • 我为第一列设置了空文本.
  • 我将CheckBoxes属性设置ListView为true.
  • 我为项目设置了空文本,并为每个项目添加了2个子项目.

  • @SantoshKokatnur你可以在你的代码项目文章中给Reza Aghaei一些信任... https://www.codeproject.com/Tips/1083589/Adding-Checkbox-to-a-List-View-Column-Header-in-铯 (2认同)