第一个问题:如何更新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. 关于plist文件

    一.代码创建plist文件: NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomain ...

  2. 1236 hdu排名

    Problem Description 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 每题的分值,所以并不是最后的排名.给定录取分数线,请你写程序找出最后通 ...

  3. javascript取消disabled属性

    jQuery: $("#ID").attr("disabled",false);

  4. 库函数 Math

    int abs( int num ); double fabs( double arg ); long labs( long num ); 函数返回num的绝对值   #include <mat ...

  5. 【破解】破解ACDSEE15的方法

    1.先从官方下载一个ACDSEE15简体中文版 2.下载注册机(点我下载) 3.修改注册表 修改注册表ACDSee 32位:HKEY_LOCAL_MACHINE\SOFTWARE\ACD System ...

  6. cf B. Vasily the Bear and Fly

    http://codeforces.com/contest/336/problem/B #include <cstdio> #include <cstring> #includ ...

  7. KEIL的宏汇编器A51介绍

    A51是一种具有通用特性和用法的重定位宏汇编器.它与Intel公司的MASM51宏汇编器具有很好兼容性,支持模块化编程,可以方便地与高级语言接口.A51宏汇编器支持汇编伪指令.宏处理指令以及汇编控制命 ...

  8. Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom(转)

    文中的 Random即:java.util.Random,ThreadLocalRandom 即:java.util.concurrent.ThreadLocalRandomSecureRandom即 ...

  9. The Flat Dictionary

    The Flat Dictionary 原来的代码没处理dict为空的情况 1 def flatten(dictionary): 2 #[] is a list 3 #() is a tuple 4 ...

  10. haproxy简单负载均衡搭建

    最近对负载均衡进行搭建具体方法如下: haproxy 修改部分(haproxy-cfg.cfg) global daemon maxconn 4500 defaults mode http timeo ...