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

简介: 原文: 解决DataGridView在多线程中无法显示滚动条的问题 在多线程中对DataGridView指定 DataSource 来填充数据,更新数据的时候,会导致DataGridView出现假死,显示错误或者滚动条无法显示的问题,在保证了DataGr...
原文: 解决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;但不可在多线程中随便使用。

目录
相关文章
|
API C# Windows
Winform控件优化之无边框窗体及其拖动、调整大小和实现最大最小化关闭功能的自定义标题栏效果
Winform中实现无边框窗体只需要设置FormBorderStyle = FormBorderStyle.None,但是无边框下我们需要保留移动窗体、拖拽调整大小、自定义美观好看的标题栏等...
2630 0
Winform控件优化之无边框窗体及其拖动、调整大小和实现最大最小化关闭功能的自定义标题栏效果
如何将DataGridView中的滚动条显示出来
1、选项设置   DataGridView有一个ScrollBars,可以设置水平滚动条,垂直滚动条,或者两种包含。   2、实际运行效果
4581 0
|
3天前
如何实现更改窗体标题栏的样式
如何实现更改窗体标题栏的样式
15 0
|
C#
WPF 后台C#设置控件背景图片
原文:WPF 后台C#设置控件背景图片 以前的程序中有做过,当时只是记得uri很长一大段就没怎么记。今天有人问了也就写下来。
1994 0
|
C#
WPF中获取TreeView以及ListView获取其本身滚动条的方法,可实现自行调节scoll滚动的位置(可相应获取任何控件中的内部滚动条)
原文:WPF中获取TreeView以及ListView获取其本身滚动条的方法,可实现自行调节scoll滚动的位置(可相应获取任何控件中的内部滚动条) 对于TreeView而言: TreeViewAutomationPeer lvap = new TreeViewAuto...
2314 0
|
C# 数据可视化 容器
WPF自适应可关闭的TabControl 类似浏览器的标签页
原文:WPF自适应可关闭的TabControl 类似浏览器的标签页 效果如图:   虽然说是自适应可关闭的TabControl,但TabControl并不需要改动,不如叫自适应可关闭的TabItem.
2025 0