c# Winforms ListView选择图?

更新时间:2024-04-26 下载TXT文档 下载Word文档

是否可以覆盖listview detault选择画图?看起来像半透明蓝色的对象覆盖在项目上,就像在资源管理器窗口中一样。

我想在选区周围绘制轮廓以指示选区。

有什么办法吗?例子是值得赞赏的。

.NET ListView支持所有者绘图比其他答案建议的直接得多。您甚至不需要继承。将OwnerDraw设置为true,侦听DrawSubItem事件,然后在该事件中可以绘制自己喜欢的东西。

与往常一样,ObjectListView使此过程更容易。此页面记录了确切的操作方法。如果您觉得用户很卑鄙,可以使用以下方法:alt

要执行类似您要求的操作,您必须拦截自定义绘图的后绘画阶段(而不是所有者绘图。MichaelDunn为CodeProject编写了自定义绘图的精彩介绍)。您可以在此处阅读所需内容。

我不想这么说,但是最简单的答案是使用ObjectListView,创建装饰并安装它:

public void InitializeSelectionOverlay()
{
    this.olv1.HighlightForegroundColor = Color.Black;
    this.olv1.HighlightBackgroundColor = Color.White;
    this.olv1.AddDecoration(new SelectedRowDecoration());
}

public class SelectedRowDecoration : IOverlay
{
    public void Draw(ObjectListView olv, Graphics g, Rectangle r) {
        if (olv.SelectedIndices.Count != 1)
            return;

        Rectangle rowBounds = olv.GetItem(olv.SelectedIndices[0]).Bounds;
        rowBounds.Inflate(0, 2);
        GraphicsPath path = this.GetRoundedRect(rowBounds, 15);
        g.DrawPath(new Pen(Color.Red, 2.0f), path);
    }

    private GraphicsPath GetRoundedRect(RectangleF rect, float diameter) {
        GraphicsPath path = new GraphicsPath();

        RectangleF arc = new RectangleF(rect.X, rect.Y, diameter, diameter);
        path.AddArc(arc, 180, 90);
        arc.X = rect.Right - diameter;
        path.AddArc(arc, 270, 90);
        arc.Y = rect.Bottom - diameter;
        path.AddArc(arc, 0, 90);
        arc.X = rect.Left;
        path.AddArc(arc, 90, 90);
        path.CloseFigure();

        return path;
    }
}

这给出了类似以下内容的内容:alt

以上就是短码网小编为大家整理的《c# Winforms ListView选择图?》相关内容,希望大家喜欢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若内容造成侵权/违法违规/事实不符,请将联系本站反馈,一经查实,立即处理!

c# Winforms ListView选择图?》文档下载仅供参考学习,下载后请在24小时内删除。

转载注明出处:https://www.duanma.net/article/0abce900688.html

回到顶部