跨线程为控件赋值并保持listview选中状态以及在可见区域显示

本例主要功能为跨线程为控件赋值,并且实现listview控件保持选中状态以及在可见区域显示

        /// <summary>
        /// 为控件赋值的委托
        /// </summary>
        /// <param name="realTimeRecord"></param>
        delegate void SetListViewCallback2(List<CheckedItRecord> checkedItRecordList);

       int itemIndex = -1;//初始化listview选中项的索引

 
  
#region 跨线程绑定发布列表
/// <summary>
/// 跨线程绑定发布列表
/// </summary>
/// <param name="realTimeRecord"></param>
private void SetListViewPublish(List < CheckedItRecord > checkedItRecordList)
{
// InvokeRequired需要比较调用线程ID和创建线程ID
// 如果它们不相同则返回true
if ( this .listViewPublish.InvokeRequired)
{
SetListViewCallback2 d
= new SetListViewCallback2(SetListViewPublish);
this .Invoke(d, new object [] { checkedItRecordList });
}
else
{
listViewPublish.Items.Clear();
foreach (CheckedItRecord checkedItRecord in checkedItRecordList)
{
ListViewItem lvitem
= new ListViewItem();
lvitem.Tag
= checkedItRecord.DeviceID.ToString();
lvitem.SubItems[
0 ].Text = (Convert.ToString(checkedItRecord.BeginTime));
lvitem.SubItems.Add(Convert.ToString(checkedItRecord.EndTime));
lvitem.SubItems.Add(checkedItRecord.Editor);
List
< CommonInfo > stateInfoListTemp = stateInfoList.FindAll( delegate (CommonInfo obj) { return obj.Code == Convert.ToString(( int )checkedItRecord.SendState); });
lvitem.SubItems.Add(stateInfoListTemp[
0 ].Type);
lvitem.SubItems.Add(checkedItRecord.EditTime);
lvitem.SubItems.Add(Convert.ToString(checkedItRecord.SendTime));
lvitem.SubItems.Add(checkedItRecord.SendInfoID.ToString());
lvitem.SubItems.Add(checkedItRecord.InfoID.ToString());
listViewPublish.Items.Add(lvitem);
}
if ( this .itemIndex != - 1 )
{
// 保证listview选中状态及可见性
this .listViewPublish.Items[ this .itemIndex].Selected = true ;
this .listViewPublish.Items[ this .itemIndex].EnsureVisible();
}
}
}
#endregion

转载于:https://www.cnblogs.com/smartsensor/archive/2011/04/28/2031835.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值