【问题标题】:Show subitems in C# ListView when using Tile view使用 Tile 视图时在 C# ListView 中显示子项
【发布时间】:2011-08-15 14:23:41
【问题描述】:

我正在使用 ListView 组件在我的程序中显示一些保存的配置文件,每个配置文件都有一个图标和一个标题。所以我使用了 View 属性设置为 Tile 的 ListView(也应用了分组)

我不想添加一些关于条目的描述文本(不是工具提示)。我可以像 Windows Explorer 那样做吗?

【问题讨论】:

    标签: c# listview


    【解决方案1】:

    您可能需要定义列标题。来自documentation

    平铺视图显示每个项目 左侧有一个大图标和文字 右边的信息。文字的 信息由项目标签组成 其次是子项目。默认情况下,仅 显示第一个子项,其中 对应项目标签。到 显示其他子项,您必须 将ColumnHeader 对象添加到 Columns 收藏。中的每个子项 瓦片对应于一列 标题。控制哪些子项是 显示和它们的顺序 显示,您必须设置 ListViewItem.ListViewSubItem.Name 每个项目的属性和 ColumnHeader.Name 每个属性 标题。然后,您可以添加、删除和 重新排列 Columns 中的标题 收集达到预期 结果。

    【讨论】:

      【解决方案2】:

      我不确定这是否会完全符合您的要求,因为我只测试过它没有任何图标,但它会在 ListView 处于平铺模式时写入子项。

      首先将 ListView 上的 OwnerDraw 设置为 true,然后将此函数添加到其 DrawItem 事件中:

      private void statisticsView_DrawItem(object sender,
          DrawListViewItemEventArgs e)
      {
          e.Graphics.FillRectangle(Brushes.White, e.Bounds);
          if((e.State & ListViewItemStates.Selected) != 0)
              e.DrawFocusRectangle();
      
          Rectangle bounds = e.Bounds;
          Font font = ((ListView)sender).Font;
          Font nameFont = new Font(font.FontFamily,
              font.Size,
              FontStyle.Underline | FontStyle.Bold,
              font.Unit,
              font.GdiCharSet,
              font.GdiVerticalFont);
      
          using(StringFormat sf = new StringFormat())
          {
              e.Graphics.DrawString(e.Item.SubItems[0].Text,
                  nameFont, Brushes.Black, bounds, sf);
              bounds.Y += 17;
              for(int i = 1; i < e.Item.SubItems.Count; ++i, bounds.Y += 15)
                  e.Graphics.DrawString(e.Item.SubItems[i].Text,
                      font, Brushes.Black, bounds, sf);
          }
      }
      

      首先它用白色背景颜色填充瓷砖,如果瓷砖被选中,它会在其周围绘制一个选择矩形。下一部分只是采用 ListView 上设置的字体并创建一个重复的字体并进行一些更改。最后,它绘制每个子项,同时在每个子项之后将绘图矩形向下移动 15 个像素。第一个子项使用单独的字体绘制,比其余子项高 17 个像素。

      您应该能够修改代码以满足您的需要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多