我有一个列出一堆文件的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窗体。
答案 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类
进行自己的复选框绘制希望这有帮助,尊重