欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET WinForm实现在listview中添加progressbar的方法

程序员文章站 2023-12-04 22:53:40
本文实例讲述了.net winform实现在listview中添加progressbar的方法。分享给大家供大家参考,具体如下: 找了好长时间没找到,后来索性自己写了一个...

本文实例讲述了.net winform实现在listview中添加progressbar的方法。分享给大家供大家参考,具体如下:

找了好长时间没找到,后来索性自己写了一个:

首先,在往listview加载数据的事件里添加progressbar:

foreach (string d in arr)
{
    int index = lv.items.count + 1;
    item = new listviewitem(new string[] { index.tostring(), d, "", "", "", "" });
    lv.items.add(item);
    float progress = 0;
    rectangle sizer = default(rectangle);
    system.windows.forms.progressbar progbar = new system.windows.forms.progressbar();
    sizer = item.subitems[2].bounds;
    sizer.width = lv.columns[2].width;
    progbar.parent = lv;
    progbar.setbounds(sizer.x, sizer.y, sizer.width, sizer.height);
    progbar.value = (int)progress;
    progbar.visible = true;
    //取一个唯一的名字,以后好找
    progbar.name = d + "progressbar";
}

然后在需要修改progressbar的值的地方设置它的值:

//循环listview上的所有控件,按名字找到progressbar
foreach (control item in lv.controls)
{
    if (item.name == d.name + "progressbar")
    {
      progressbar bar = (progressbar)item;
      bar.value = (int)((d.progress) * 100);
    }
}

其实我们只是把progressbar根据长宽高固定在了listview指定的格子里,如果我们拖动listview中的列,格子的位置会发生改变,这时候需要修改对应proressbar的位置,我们需要添加columnwidthchanging事件,在拖动column的时候,progressbar会随着改变位置:

private void lvt_columnwidthchanging(object sender, columnwidthchangingeventargs e)
{
  rectangle sizer = default(rectangle);
  int width = e.newwidth;
  foreach (control item in lv.controls)
  {
    //根据名字找到所有的progressbar
    if (item.name.indexof("progressbar") >= 0)
    {
      progressbar bar = (progressbar)item;
      //rectangle size=bar.bounds;
      sizer=bar.bounds;
      //lv.columns[2]是放置progressbar的地方
      sizer.width=lv.columns[2].width;
      bar.setbounds(lv.items[0].subitems[2].bounds.x, sizer.y, sizer.width, sizer.height);
      //bar.width = width;
    }
  }
}

更多关于c#相关内容感兴趣的读者可查看本站专题:《winform控件用法总结》、《c#窗体操作技巧汇总》、《c#数据结构与算法教程》、《c#常见控件用法教程》、《c#面向对象程序设计入门教程》及《c#程序设计之线程使用技巧总结

希望本文所述对大家c#程序设计有所帮助。