我想知道在插入设备时是否有任何方法可以在Windows资源管理器的自动启动中制作类似控件的控件。
我原本认为这可能是一种或多或少修改过的listview控件,但我无法找到任何与Google有关的内容。我还检查了很多CodeProject页面。
有没有人知道我能在哪里获得控制权或我如何自己制作? (我对OwnerDraw不太好:P)
感谢。
答案 0 :(得分:1)
实际上调整ListView
并不比拥有它更容易。这是一个示例,它实际上是多么简单。
您只需编写一个事件(DrawItem
),然后就完成了。
这段代码假定:
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主题。