C# winform中,简单实现Listview 设置边框 在线等高手....

q14510006 2013-08-29 04:48:33
效果图就像我用红线框起来的一样!
...全文
1788 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
从_零_开始 2014-03-24
  • 打赏
  • 举报
回复
每个listview 项 重绘的时候都会发生
encorebaby 2014-03-24
  • 打赏
  • 举报
回复
引用 17 楼 qipeitao 的回复:
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) { try{ Graphics g = e.Graphics; Rectangle rect = Rectangle.Empty; Image image =imageList1.Images[e.Item.ImageIndex]; rect = new Rectangle(e.Bounds.Left, e.Bounds.Top, image.Width, image.Height); g.DrawImage(image, rect); g.DrawRectangle(new Pen(Color.Red, 3), rect); if ((e.State & ListViewItemStates.Selected) == ListViewItemStates.Selected) { g.DrawRectangle(new Pen(Color.Green, 3), rect); } }catch(Exception ex) { } }
这个是什么时候调用的 那个参数e不匹配怎么办
你丫至于么 2013-08-30
  • 打赏
  • 举报
回复
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{

try{
Graphics g = e.Graphics;
Rectangle rect = Rectangle.Empty;
Image image =imageList1.Images[e.Item.ImageIndex];
rect = new Rectangle(e.Bounds.Left, e.Bounds.Top, image.Width, image.Height);
g.DrawImage(image, rect);
g.DrawRectangle(new Pen(Color.Red, 3), rect);
if ((e.State & ListViewItemStates.Selected) == ListViewItemStates.Selected)
{
g.DrawRectangle(new Pen(Color.Green, 3), rect);
}
}catch(Exception ex)
{

}
}

你丫至于么 2013-08-30
  • 打赏
  • 举报
回复
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) { if(listView1.SelectedItems.Contains(listView1.Items[e.ItemIndex])) { ///绘制 } }
你丫至于么 2013-08-30
  • 打赏
  • 举报
回复
绘制就是这样绘制的,至于需要什么时候绘制,可以加条件限制啊,至于点击时单个绘制,加个判断不就行了么
czz65979674 2013-08-30
  • 打赏
  • 举报
回复
这个是点击的时候产生的红色边框 还是一开始加载进来就有红色边框呢? 如果是所有图片都有 那可以像上面的重载,但是如果是点击产生的 可以绘制就行了
你丫至于么 2013-08-30
  • 打赏
  • 举报
回复
你覆写方法就可以了
你丫至于么 2013-08-30
  • 打赏
  • 举报
回复
9楼已经给出了,OnDrawItem 是ListView 的初始化里的,你不需要调用的
q14510006 2013-08-30
  • 打赏
  • 举报
回复
不是调用,是怎么用
q14510006 2013-08-30
  • 打赏
  • 举报
回复
ListView那边怎么调用,
智商余额不足 2013-08-29
  • 打赏
  • 举报
回复

    public class MyListView : ListView
    {
        public MyListView()
        {
            this.OwnerDraw = true;
            this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);
        }

        protected override void OnDrawItem(DrawListViewItemEventArgs e)
        {
            base.OnDrawItem(e);
            if (View != View.LargeIcon) return;
            Graphics g = e.Graphics;
            Rectangle rect = Rectangle.Empty;
            Image image = LargeImageList.Images[e.Item.ImageIndex];
            rect = new Rectangle(e.Bounds.Left, e.Bounds.Top, image.Width, image.Height);
            g.DrawImage(image, rect);
            if ((e.State & ListViewItemStates.Selected) == ListViewItemStates.Selected)
            {
                g.DrawRectangle(new Pen(Color.Red, 3), rect);
            }
            // draw text
        }
    }
卧_槽 2013-08-29
  • 打赏
  • 举报
回复
DrawMode 画个背景图,比你那红线框好看多了。
q14510006 2013-08-29
  • 打赏
  • 举报
回复
#4 四楼的晚上和你探头一下
q14510006 2013-08-29
  • 打赏
  • 举报
回复
这个看了没有我想要的那种效果 也试过了!
EnForGrass 2013-08-29
  • 打赏
  • 举报
回复
用ListView的DrawMode,自己绘制 可以参考http://www.csharpwin.com/csharpresource/3568r4066.shtml
智商余额不足 2013-08-29
  • 打赏
  • 举报
回复
重绘 不是重写 笔误
q14510006 2013-08-29
  • 打赏
  • 举报
回复
小弟太谢谢你了
智商余额不足 2013-08-29
  • 打赏
  • 举报
回复
重写item估计是可以的,时间不急晚上我写一下
q14510006 2013-08-29
  • 打赏
  • 举报
回复
自己顶一下 高手们小弟急啊

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧