.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;
                }
            }
        }
时间: 2024-12-06 12:24:59

.NET winform 在listview中添加progressbar的相关文章

Android 如何在 ListView 中更新 ProgressBar 进度

=======================ListView原理============================== Android 的 ListView 的原理打个简单的比喻就是: 演员演小品(假设演员都长一样,每个角色任何演员都可以演) 小品剧也不会为每个角色都招募一个演员.ListView 不会为每一个 Item 创建 View 对象. 小品剧的演员在一个角色表演完成后,会在后台换下一个角色的服装,等待需要表演的时候再出场. ListView 会让未显示的 View 填充数据后缓

winform实现listview中combox

一.概要 因为要在项目中要在ListView中实现下拉框选择,用DataGrid的话,一个不美观,二个绑定数据麻烦,参考网上一种做法,就是单击ListView时,判断单击的区域,然后将Combox控件显示单击的区域,以模拟效果,很少写winform,写的不好,望大家不要笑话. 二.准备控件 先在容器中拖入一个ListView控件和Combox控件,然后设置Combox控件的Visible属性为False,即隐藏Combox控件,如图: 随便填充点数据到ListView和Combox中,如下: 1

ListView中添加Button后,Button的点击事件和ListView的点击事件冲突

1.在ItemView配置的xml文件中的根节点添加属性android:descendantFocusability="blocksDescendants" 2.在要添加事件的控件上添加android:focusable="false

ListView中添加ScrollView只显示一两行的问题

将ListView改为继承NoScrollListView package com.example.brtz.widget; import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /*** * 自定义ListView子类,继承ListView * @author Administrator * */ public class NoScrollListVie

Android学习之解决ListView中item点击事件和item中Button点击事件冲突问题

在ListView中添加Button后,如果只是单纯的加入而不加限制的话,ListView的onClick点击事件没有响应,因为Button获取了item的焦点,想要两者都可点击,需要加上如下限制: 在ListView的适配器中的布局文件中添加: (1)在布局文件的根元素上中添加属性android:descendantFocusability="blocksDescendants" (2)在Button中添加属性android:focusable="false"和a

Android ListView中的简单分组(标题含图片)

思路:ListView中添加一个SimpleAdapter,SimpleAdapter中动态添加大标题及大标题下的小标题,接下来按照思路来进行. 第一步:建立ListView布局文件list.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 androi

C# 将Access中时间段条件查询的数据添加到ListView中

C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Columns集合中添加表头中的文字. 二.利用代码给ListView添加Item. 首先,ListView的Item属性包括Items和SubItems.必须先实例化一个ListIteView对象.具体如下: ListViewItem listViewItem=new ListViewItem(); l

【转】ListView,GridView之LayoutAnimation特殊动画的实现 ps:需要学习的是在getView中添加动画的思想

LayoutAnimation干嘛用的?不知道的话网上搜一下. Android的Animation之LayoutAnimation使用方法有两种用法,我的通常写在代码中,像下面这样: 1 /** 2 * Layout动画 3 * 4 * @return 5 */ 6 protected LayoutAnimationController getAnimationController() { 7 int duration=300; 8 AnimationSet set = new Animatio

Aandroid在ViewPager中添加ListView

最近的项目中碰到一个需要横竖都能滑动的页面效果,如同手机qq的好友菜单界面(如下图),可以通过选项卡来选择需要的界面,也可以通过屏幕手指的滑动来实现,而每一个分页面的内容对应的是一个可以上下滑动的ListView,所以最后结合起来的效果是,在页面中可以上下滑动,在各个分页之间可以左右滑动. 对于这个效果有两种方案,一种是通过TabActivitiy来实现,将选项卡设置为TabActibitiy的标志,通过将需要的分页加载到Tab的各个标志中去,但是这种方法,由于每一次切换选项卡的时候都会重新去创