C#跳过复选框listView

时间:2010-01-31 10:10:19

标签: c# winforms listview checkbox listviewitem

我有一个列出一堆文件的listView,以及一组允许用户从FTP服务器下载文件的复选框,如下所示:

Filename            Size    Last modified           New version
[ ] someimage.jpg   120 kB  2010-01-13 16:12:59     Yes
[ ] otherfile.zip   12 kB   2009-12-29 09:33:15     No
[ ] folder      -   -                               -

我不想在文件夹上有复选框,但我确实需要它(文件夹)显示在列表中。

我如何最好地对此进行排序?

更新:我正在使用Windows窗体。

1 个答案:

答案 0 :(得分:2)

您可以将列表框放入OwnerDraw状态(将true设置为OwnerDraw属性)。然后定义DrawSubItem和DrawColumnHeader事件处理程序。在DrawSubItem中,对需要复选框的项目执行默认绘制。检查下面的代码;它应该跳过在其文本字段中为“1”的项目勾选一个复选框,并仅绘制项目的文本。

private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
    if (e.ColumnIndex == 0 && e.Item.Text=="1")
    {
        e.DrawBackground();
        e.DrawText();
    }
    else
    {
        e.DrawDefault = true;
    }
}

private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
    e.DrawDefault = true;
}

作为替代方案,您可以使用CheckBoxRenderer

进行自己的复选框绘制

希望这有帮助,尊重