解决DataGridView在多线程中无法显示滚动条的问题

原文:解决DataGridView在多线程中无法显示滚动条的问题

多线程中对DataGridView指定 DataSource 来填充数据,更新数据的时候,会导致DataGridView出现假死,显示错误或者滚动条无法显示的问题,在保证了DataGridView的ScrollBars设置为了Both,数据量大于DataGridView显示的的范围,而且没有冻结列的情况下,解决方法如下:

一是使用 Invoke 将执行数据绑定的代码交回给主线程(因为 DataGridView 是主线程创建的);

二是在指定 DataSource 之前,将其置为 null。

private delegate void InvokeHandler();
//子线程中
this.Invoke(new InvokeHandler(delegate()
            {
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = dgv_dt;
            }));

忽略子线程操作主线程创建的对象只要加一句:Control.CheckForIllegalCrossThreadCalls = false;但不可在多线程中随便使用。

时间: 2024-10-06 16:13:06

解决DataGridView在多线程中无法显示滚动条的问题的相关文章

代码-关于datagridview在多线程中滚动条无法使用的问题

问题描述 关于datagridview在多线程中滚动条无法使用的问题 private delegate void InvokeHandler(); //子线程中 this.Invoke(new InvokeHandler(delegate() { dataGridView1.DataSource = null; dataGridView1.DataSource = dgv_dt; })); 在网上查的到是这么解决的,但是我不知道该把代码贴在哪里,已经把datasource换成了自己的datata

解决移动硬盘在我的电脑中无法显示的问题

新买的移动硬盘在我的电脑中无法显示,但是右下角图标显示已经连接,请问是什么问题?XP 和VISTA系统都试过了,在我的电脑中不显示移动硬盘. 答:新买的?是不是还没有分区啊?那当然不显示啊. 插上移动硬盘后,我的电脑-右键-管理-磁盘管理,这里面应该能看到你的移动硬盘,应该显示未划分,你分区并格式化就好了. 答:可能原因如下: 1.你的移动硬盘没有分区. 右键单击"我的电脑"--管理--磁盘管理--右边窗口是否能够看到移动硬盘盘符?如果可以看到,右键单击格式化即可. 2.如果已经分区,

怪问题,求高手帮解决!!多线程中丢数据的问题

问题描述 [背景介绍]:本人原来开发了一套多通道数据采集分析系统,分析软件开发环境是VS2010,.Net4.0,使用C#语言编写,配合NImeasurementstudio2010做图形显示,另外还用了DXPerience10的控件.多通道采集器通过UDP协议与软件进行数据通讯,软件和采集器有一套完善的通讯协议,通讯过程是这样的,软件发送数据请求包,采集器将所有24通道数据发送给软件(24包).为保证数据完整性,软件存储策略是收到全部数据后才同意存储,否则丢弃数据,等到下一帧数据.该软件也开发

jsp-div中内容显示不完全,滚动条不能出现!急!!!!

问题描述 div中内容显示不完全,滚动条不能出现!急!!!! <%-- --%> <c:forEach items="${page.items }" var="t" varStatus="index"> <div style="padding-left:50px;"> <span > <label style="float:left;"><f

c#datagridview-C#datagridview自定义控件不可编辑后显示不了滚动条

问题描述 C#datagridview自定义控件不可编辑后显示不了滚动条 自定义datagridview控件设置可以编辑滚动条能显示出来,可是设置了不可编辑后滚动条就显示不出来了,希望能有解决方法.

分享一段“在.net的多线程中更新任意为Control类型的控件”解决窗体假死问题,调用极其简洁和方便~~~

问题描述 众所周知,在.net的多线程中更新界面时很容易假死,如果界面上有100个控件,那代码量又是相当的复杂,现提供一段简单的代码,可以用于线程代码的任意位置,而界面又不会假死.总之是一行代码,解决了一个复杂而又麻烦的大问题,让你完全不用考虑多线程下对控件的处理,直接调用就好了.1.适用范围:任意Control类型的控件.2.调用this.Label1.InvokeEx(e=>e.Text=DateTime.Now); 3.代码publicstaticvoidInvokeEx<T>(t

如何于DataGridView控件中以跨数据行方式显示数据

datagrid|控件|数据|显示 一般来说,每一个字段的内容会单独显示于DataGridView控件的一个数据行中.问题是,某些字段拥有大量文字数据,我是不是能够让该字段的内容以跨数据行的方式来显示,以便在有限的画面空间中的呈现出更完整的内容呢?答案当然是肯定的. 以图表1所示的执行画面而言,「自传」字段的内容并未单独显示于一个数据行中,而是以横跨数据行的方式,显示在同笔数据列之各字段内容的下方.相关程序代码列示如下: using System;using System.Collections

Android ListView滑动过程中图片显示重复错乱闪烁的原因及解决方法

主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制. 1.原因分析 ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b. 获取滑入屏幕的行item之前会先判断缓存中是否有可用的ite

html中设置让div中的内容超出后自动显示滚动条

 在html页面中,我们有时需要让div中的内容超出后自动显示滚动条,我们可以这样设置: 代码如下: <div class="classlist"> <div class="autoScroll"> <asp:RadioButtonList ID="rblClasses" runat="server" DataTextField="className" DataValueFie