2

我有一个 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 窗体。

4

1 回答 1

2

您可以将列表框置于 OwnerDraw 状态(将 OwnerDraw 属性设置为 true)。然后定义 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类进行自己的复选框绘制

希望这会有所帮助,问候

于 2010-02-01T00:16:39.327 回答