【问题标题】:C# skip checkbox listViewC# 跳过复选框列表视图
【发布时间】:2011-01-11 09:24:30
【问题描述】:

我有一个列出一堆文件的 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 窗体。

【问题讨论】:

标签: c# winforms listview checkbox listviewitem


【解决方案1】:

您可以将列表框置于 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 类进行自己的复选框绘制

希望这会有所帮助,问候

【讨论】:

  • 错字警告:它在上面应该显示 ListView 的位置显示 Listbox。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
相关资源
最近更新 更多