(ListView?) – 在Windows资源管理器中控制

我想知道在插入设备时是否有任何方法可以在Windows资源管理器的自动启动中进行类似控制。

在此处输入图像描述

我原以为这可能是一个或多或少被修改过的listview-control,但是我无法找到任何关于谷歌的东西。 我还检查了很多CodeProject页面。

有没有人知道我可以在哪里获得控制权或我如何自己制作一个? (我对OwnerDraw不太好:P)

谢谢。

实际上调整ListView并不比ownerDrawing更容易。 这是一个示例,它实际上是多么简单。

你只需编写一个事件( DrawItem )脚本,就完成了。

这段代码假设:

  • LV的视图设置为List
  • 您有一个合适的ImageList添加到您的表单
  • 您将LV的ownerDraw设置为true
  • 您添加了两列来保存两个标签中显示的文本
  • 你已经使第一列足够宽,以容纳所有被绘制的东西
  • 你已经让LV的FontSize和图像的高度一样大(比如说32)
  • 将适当的ImageIndex值分配给LV的项目

 private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) { Point point0 = new Point(e.Bounds.Left, e.Bounds.Top); Point point1 = new Point(imageList1.ImageSize.Width + 10, e.Bounds.Top + 5); Point point2 = new Point(imageList1.ImageSize.Width + 10, e.Bounds.Top + 25); Size size = new Size(listView1.ClientRectangle.Width, e.Bounds.Height); Rectangle R = new Rectangle(point0, size); Font F1 = new Font(listView1.Font.FontFamily, 11f, FontStyle.Bold); Font F2 = new Font(listView1.Font.FontFamily, 10f); if (e.Item.Focused) e.Graphics.FillRectangle(Brushes.LightBlue, R); else if (e.ItemIndex % 2 == 1) e.Graphics.FillRectangle(Brushes.GhostWhite, R); e.Graphics.DrawImage(imageList1.Images[e.Item.ImageIndex], point0 ); e.Graphics.DrawString(e.Item.Text, F1, Brushes.Black, point1); e.Graphics.DrawString(e.Item.SubItems[1].Text, F2, Brushes.Black, point2); F1.Dispose(); F2.Dispose(); } 

请注意,我已经硬编码了一些颜色来绘制每隔一行以及焦点项目。 这些颜色确实应该使用相应的系统颜色。 想到这些:

  SolidBrush brush0 = new SolidBrush(SystemColors.ControlLight); SolidBrush brush1 = new SolidBrush(SystemColors.Highlight); 

我正在使用分配给LV但具有中等大小的字体。 显然,或多或少的任何东西,特别是各种偏移,都可以根据自己的喜好进行配置。 但是使用System.Colors集合中的颜色是保持与用户的Windows主题保持一致的好方法。