解决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-27 17:10:13

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

解决cefsharp在winform中不显示tooltipText问题(网页元素的title提示)

1.监听网页属性改变事件 webView.PropertyChanged += webView_PropertyChanged; 2.拖一个ToolTip控件到窗体 3.获取TooltipText并显示出来 //隐藏toolTip if (this.IsHandleCreated) { this.BeginInvoke(new MethodInvoker(() => { if (this.IsHandleCreated && !this.IsDisposed) { if (this.

解决phpcms模版设置中不能显示栏目首页模板,栏目列表页模板,内容页模板等下拉菜单选项的问题!

第1步:检查相应的模版文件夹中是否有模版文件 一般地,查看目录phpcms/templates/default[模板风格标识]/content 栏目首页模板:以(category_)开头,category_xxx 栏目列表页模板:以(list_)开头,list_xxx 内容页模板:以(show_)开头,show_xxx 如果模板文件存在,看第二步. 第2步:查看文件夹中的模板文件是否包含了中文 例如:category - 副本.html 注意模板文件名不能有中文,因为在后台模板设置中获取模板文件

ADB Server Didn’t ACK ,failed to Start Daemon 解决方法(Eclipse中不显示device,即device离线)

关掉eclipse 在任务管理器中把adb.exe关掉 进入adb所在目录,然后执行adb start-server,成功执行则问题解决 问题应该就解决了,但如果 adb start-server 启动不起来! 最后发现了是端口占用的原因导致. 解决方法如下: 1.adb nodaemon server 查看不能执行的原因,输出: cannot bind ‘tcp:5037’ 2.定位到了是端口的问题!是5037端口被占用了! 3.netstat -ano | findstr 5037 查找谁占

【解决方法】EasyUI DataGrid不显示滚动条时,没有数据的问题

解决方法 于dataGrid例如,下面的代码被添加到的定义: JavaScript Code 1 2 3 4 5 6 7 8 9 10 onLoadSuccess : function (data) { if (data.total == 0) { $('#dg').datagrid('insertRow', { row : {} }); $("#dg").parent().find("tr[datagrid-row-index='0']").css({ "

【解决方法】EasyUI DataGrid无数据时不显示滚动条问题

在dataGrid的定义中添加如下代码: JavaScript Code 1 2 3 4 5 6 7 8 9 10 11 onLoadSuccess : function (data) { if (data.total == 0) { $('#dg').datagrid('insertRow', { row : {} }); $("tr[datagrid-row-index='0']").css({ "visibility" : "hidden"

在多线程中显示模态窗口,出现异常现象

无意间发现如果在多线程中显示模态窗口后,当这个模态窗口关闭后,原来的主窗口无法再次响应鼠标事件了. 就是窗口上的按钮用鼠标点击没反应,整个窗口看上去像是禁用的状态. 具体原因到现在没找到. 最后的解决办法: 在多线程中,使用 SendMessage() 发送一个[用户自定义消息], 然后由UI线程来接收,并显示模态窗口,这个时候当模态窗口关闭后,主窗口还是处于激活的状态,窗口上的按钮可以正常点击和响应. 同时我发现,如果在多线程中,调用 MessageBox() 来弹出模态对话框,当关闭对话框后

VMware ESXi中不能显示CPU及内存使用情况的解决方法

今天一个网友问我,他管理的机房有4台ESXi 5.1的服务器,其中三台ESXi Server不能显示各个虚拟机占用的CPU.内存情况了,如图1-1所示. 图1-1在"虚拟机"选项卡中不能显示每个启动虚拟机的资源占用情况 另外,在VMware ESXi的"摘要"中,CPU与内存的使用情况也统计出错,如图1-2所示. 图1-2 摘要统计出错 在出现这个问题时,各个ESXi Server上的虚拟机可以正常启动.关闭,并且各虚拟机运行的系统及应用不受影响. 从上面两个图我看

【转】【已解决】Android中ActionBar中不显示overflow(就是三个点的那个按钮)--不错

原文网址:http://www.crifan.com/android_actionbar_three_dot_overflow_not_show/ [问题] 折腾: [记录]继续尝试给Android程序的右上角的ActionBar中添加三个点的选项按钮 期间,已经按照官网的教程: Action Bar | Android Developers 去添加代码,增加menu,然后显示在ActionBar中了. 但是遇到的问题是: 对于menu的item,没有指定android:showAsAction

WPF中datagrid不显示滚动条问题

WPF中DataGrid是自带滚动条的,当内容显示不下时可以使用滚动条显示.但是,开发中遇到了DataGrid一直不显示滚动条.之前也曾遇到过同类问题,再次经过查找,发现是StackPanel的原因,特此记录. 以下内容原文请参考:http://www.cnblogs.com/lhx880619/archive/2011/12/08/2281420.html 原因也比较简单 就是因为DataGrid嵌套在了StackPanel中,查看微软文档http://msdn.microsoft.com/z