第一个问题:如何更新ListView控件内容

  很多时候运行窗体程序时,由于程序中使用了多线程加之操作不当,所以在对控件操作时会出现下面这样的异常:

 
这是因为我们在窗体中添加的控件都有属于自己的线程,所以不能从其它线程来访问它。
那要如何解决?
使用委托:MethodInvoker,我用这个挺方便的。下面举一个用例:
 //调用InitListView(),便可以对ListView控件进行自由更新啦
private void InitListView()
{
MethodInvoker In = new MethodInvoker(InitListViewed);
this.BeginInvoke(In);
}
private void InitListViewed()
{
//在这里面就可以进行ListView控件的构建以及数据更新等
listView1.Columns.Clear();
}

第二个问题:如何解决ListView控件更新时闪烁问题

  我在更新控件时,使用的是定时更新,而每次更新控件的内容都会一闪一闪的,用户体验感一点也不好。

那有没有办法使它不闪,我解决的办法是使用双缓冲。

  下面举一个例子,简单说一下步骤及办法。

1、第一步:我们创建一个类,类名为ListViewNF,是继承窗体的ListView控件

class ListViewNF : System.Windows.Forms.ListView
{
public ListViewNF()
{
// 开启双缓冲
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.EnableNotifyMessage, true);
} protected override void OnNotifyMessage(Message m)
{
//Filter out the WM_ERASEBKGND message
if (m.Msg != 0x14)
{
base.OnNotifyMessage(m);
}
}
}

注意:该添加的引用都要添加进去哦,因为修改了控件名,因此会出现一些错误哦。

 

C#如何解决对ListView控件更新以及更新时界面闪烁问题的更多相关文章

  1. C# 解决winform 窗体控件在窗体变化时闪烁的问题

    在窗体form代码中加入如下代码即可: protected override CreateParams CreateParams { get { CreateParams cp = base.Crea ...

  2. ListView控件--2016年12月9日

    ListView属性 ListView   名称 说明 AccessKey 重写 WebControl.AccessKey 属性. 不支持将此属性设置 ListView 控件.(覆盖 WebContr ...

  3. Android中ListView控件的使用

    Android中ListView控件的使用 ListView展示数据的原理 在Android中,其实ListView就相当于web中的jsp,Adapter是适配器,它就相当于web中的Servlet ...

  4. winform listview控件

    ListView控件 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置 ...

  5. 《ASP.NET1200例》ListView控件之修改,删除与添加

    aspx <body> <form id="form1" runat="server"> <div> <asp:Lis ...

  6. 《ASP.NET1200例》ListView 控件与DataPager控件的结合<二>

    ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示 为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己 ...

  7. 《ASP.NET1200例》ListView 控件与DataPager控件的结合<一>

    分页     在前一部分开始时介绍的原 HTML 设计中内含分页和排序,所以根据规范完整实现该网格的任务尚未完成.我们先分页,然后再排序. ListView 控件中的分页通过引入另一个新控件 Data ...

  8. Listview控件实现已选择效果

    Winform中用Listview控件实现更新点击选择后已选择效果,如图: 代码如下: private void frmSelect_Load(object sender, EventArgs e) ...

  9. ListView控件的Insert、Edit和Delete功能(第一部分)

    摘自:http://blog.ashchan.com/archive/2007/08/28/listview-control-insert-edit-amp-delete-part-1aspx/ Li ...

随机推荐

  1. 1 Intellij IDEA 个人常用快捷方式

    个人常用快捷方式 alt+enter    万能键                                          inn if(xxx!=null) iter foreach ct ...

  2. MFC中使用ADO方式连接数据库

    文章转自:http://blog.sina.com.cn/s/blog_a43aba5601014z8h.html 一.数据库操作准备 1.导入ADO动态链接库 在工程的stdafx.h中加入如下语句 ...

  3. Mahout快速入门教程

    Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...

  4. [Mugeda HTML5技术教程之19]制作可定制贺卡

    本文档通过一个实例介绍可定制贺卡的动画的制作过程.实例包含两部分: 1. 动画部分:介绍动画制作过程中如何给祝福词和落款的文本对象命名,如何给定制按钮定义表单动作. 2. 代码部分:介绍贺卡的脚本逻辑 ...

  5. 阿铭linux笔记

    2015-09-06虚拟机网络设置.wmv: curl     获取在命令行显示的网页 dhclient     分配ip地址 ifdown eth0     关闭网卡eth0 ifup eh0   ...

  6. Big Event in HDU(HDU 1171 多重背包)

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  7. Angular2 和TypeScript

    Angular2 和TypeScript 原文链接:https://www.infoq.com/articles/Angular2-TypeScript-High-Level-Overview 作者: ...

  8. JWeb备忘录

    一.好记性不如赖笔头-- 工具类: JUnit4使用  MyEclipse快捷键 知识点: JAVA反射 JavaSe教程  Java5新特性  Java6新特性  Java7新特性  Java8新特 ...

  9. zoj 3772 Calculate the Function

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5235 这道题需要构造矩阵:F(X)=F(X-1)+F(X-2)*A(X)转化为 ...

  10. Solr简单部署

    因为公司最近涉及这个项目,想了解一下,以便提供更好的支持.. 参考URL: http://www.centoscn.com/CentosServer/test/2014/1127/4193.html ...