首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从后台线程正确更新数据绑定datagridview

从后台线程正确更新数据绑定datagridview的方法如下:

  1. 使用委托(Delegate)更新UI元素

在后台线程中,无法直接更新UI元素。因此,需要使用委托(Delegate)来更新UI元素。具体步骤如下:

a. 创建一个委托(Delegate)

代码语言:csharp
复制
public delegate void UpdateDataGridViewDelegate(DataTable dataTable);

b. 在主窗体中,创建一个方法,用于更新datagridview

代码语言:csharp
复制
public void UpdateDataGridView(DataTable dataTable)
{
    if (this.dataGridView1.InvokeRequired)
    {
        UpdateDataGridViewDelegate updateDataGridViewDelegate = new UpdateDataGridViewDelegate(UpdateDataGridView);
        this.Invoke(updateDataGridViewDelegate, dataTable);
    }
    else
    {
        this.dataGridView1.DataSource = dataTable;
    }
}

c. 在后台线程中,调用主窗体中的方法,更新datagridview

代码语言:csharp
复制
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    // 获取数据
    DataTable dataTable = GetData();

    // 更新datagridview
    UpdateDataGridViewDelegate updateDataGridViewDelegate = new UpdateDataGridViewDelegate(UpdateDataGridView);
    this.Invoke(updateDataGridViewDelegate, dataTable);
}
  1. 使用BindingSource

另一种方法是使用BindingSource。具体步骤如下:

a. 在主窗体中,创建一个BindingSource对象,并将其绑定到datagridview

代码语言:csharp
复制
private void Form1_Load(object sender, EventArgs e)
{
    BindingSource bindingSource = new BindingSource();
    bindingSource.DataSource = typeof(DataTable);
    this.dataGridView1.DataSource = bindingSource;
}

b. 在后台线程中,更新BindingSource对象的DataSource属性

代码语言:csharp
复制
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    // 获取数据
    DataTable dataTable = GetData();

    // 更新BindingSource对象的DataSource属性
    this.bindingSource1.DataSource = dataTable;
}

这两种方法都可以实现从后台线程正确更新数据绑定datagridview的目的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

通过 INotifyPropertyChanged 实现观察者模式

当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方...当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方...  数据绑定数据源对象可以是一个含有数据的单一对象,也可以是一个对象的集合。...之前,一直在讨论如何将目标对象与一个单一对象绑定。Silverlight中的数据绑定还能将目标对象与集合对象相绑定,这也是很常用的。比如显示文章的题目列表、显示一系列图片等。  ...必需调用DataGridView.Refresh();界面数据才会即使更新

2.8K10
  • 如何使用StreamSetsMySQL增量更新数据到Hive

    Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- 在前面Fayson介绍了《如何在CDH...中安装和使用StreamSets》,通过StreamSets实现数据采集,在实际生产中需要实时捕获MySQL、Oracle等其他数据源的变化数据(简称CDC)将变化数据实时的写入大数据平台的Hive、HDFS...本篇文章主要介绍如何使用使用StreamSets通过JDBC的方式实时抽取增量数据到Hive。 StreamSets实现的流程如下: ?...执行后可以看到有2条数据输入和输出,这与我们测试数据库的数据相符合 ? 去HUE 页面查看hive 表中的数据,发现已经更新进来 ?...去HUE 中查看hive 表的数据,跟mysql 中同步,说明增量更新成功 ?

    14.9K130

    期末作业C#实现学生宿舍管理系统

    开发背景 完整代码下载地址:点我下载 优化移步: 《c#中在datagridview的表格动态增加一个按钮方法》 《C#实现多窗口切换:Panel详细教程(亲测)》 文章还在更新,上次更新时间2022...1].Value = status;//更新状态 // dataGridView.Rows.Remove(dataGridView.SelectedRows[0]); /...,然后对图中阴影部分右键【编辑列】 编辑列在添加id、学生姓名、宿舍号、借出时间、是否归还 设计好后如下图 5、绑定主页面实现跳转(Form2) 实现图: ①首先打开Form2...答:通过表单传值记录id在新的一个窗口查询一次数据更新则是用了update 如果做到删除?...答:通过表单传值获取到的id进行数据库语句删除,删除本地的再删除数据库里面的 窗口如何传值: 本次通过构造函数,特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在目标窗体中 int

    27130

    新版本EasyCVR出现设备管理“暂无数据”,如何正确更新MySQL数据库?

    有用户反馈,已使用MySQL数据库,但是更新到新版本后,EasyCVR出现了设备管理页面显示“暂无数据”的现象,请求我们排查协助。...出现上述情况,是因为新版本EasyCVR数据库有些字段进行了改动。...更新数据库的正确操作步骤如下:1)首先,停止EasyCVR服务,确保所有进程都已经关闭:2)通过navicat或者dbeaver等工具,将旧版数据库进行转储sql文件:3)重新创建一个数据库,运行sql...4)重启EasyCVR服务,此时数据库结构就更新了。EasyCVR平台既能作为视频业务平台直接使用,也能作为视频能力层调用和集成到其他第三方平台。...随着安防视频监控技术的不断智能化发展,EasyCVR平台也在积极拓展人工智能检测与识别技术,比如人脸检测、人脸识别、车辆检测、车牌识别、轨迹跟踪、行为识别、物体检测等等,感兴趣的用户可以关注我们的更新

    50720

    WinForm企业级框架实战项目演练

    阿笨将从自己实战项目经验角度出发,带领大家快速上手WinForm企业级应用程序开发入门到精通,实际感受一下C/S软件架构模式的开发效率!...2.6、WinForm实战技能之玩转ComboBox控件 1)、如何优雅的绑定下拉列表ComboBox数据源。...2.8、WinForm实战技能之玩转DataGridView列表控件 1)、如何优雅的绑定 DataGridView数据源(BindingList)。...2.9、WinForm实战技能之玩转Loading等待控件 1)、如何通过多线程技术实现类似“数据加载...Loading”窗体加载显示控件。...2)、如何实现带百分比进度显示的 “数据加载...Loading” 加载显示控件。 3.0、WinForm实战技能之玩转分页Page控件 1)、如何优雅的使用分页Page控件。

    1.8K40

    可视化数据库设计软件有哪些_数据库可视化编程

    6)将节点服务器资源管理器中拖到 Visual Studio .NET 项目中,从而创建引用数据资源或监视其活动的数据组件。...”按钮后即进入数据集窗口,服务器资源管理器中选择一个数据连接,然后将该数据连接中的表拖曳到数据集设计界面,经过编译就建立了一个类型化数据集。...2.数据源控件 数据源控件是数据界面控件数据表获取数据的通道,包括DataSet控件和BindingSource控件。...3.BindingSource 控件的常用方法 1)RemoveCurrent方法:列表中移除当前项。 2)EndEdit方法:将挂起的更改应用于基础数据源。...1.DataGridView数据绑定 设置 DataSource 属性可以将数据绑定DataGridView 控件。

    6.7K40

    C# 可视化程序设计机试知识点汇总,DBhelper类代码

    类型数据 DataTable dt = DBHelper.getDataTable(sql1); //将返回的结果绑定DataGridView控件的数据源中 this.dataGridView1.DataSource...= dt; 数据中查出数据绑定DataGridView控件中(Load事件,查询,给下拉框赋值) //定义SQL语句 string sql1 = "select * from RoomType";...dt = DBHelper.getDataTable(sql); //将返回的结果绑定DataGridView控件中 this.dataGridView1.DataSource = dt; 选中DataGridView...; //返回 return; } 第三步、定义sql语句(根据typeId修改) //(typeID是全局变量,DataGridView控件的cellClick...; } 删除(Click事件) //定义sql语句(typeID是全局变量,DataGridView控件的cellClick事件中获取选中的隐藏的类型ID) string sql = string.Format

    7.7K20

    INotifyPropertyChanged 接口

    INotifyPropertyChanged 接口 用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。 例如,考虑一个带有名为 FirstName 属性的 Person 对象。...若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能: 实现 INotifyPropertyChanged 接口(首选)。 为绑定类型的每个属性提供更改事件。...示例 下面的代码示例演示如何实现 INotifyPropertyChanged 接口。在运行此示例时,您将注意到绑定DataGridView 控件无需重置绑定即能反映数据源中的更改。...control displays the contents of the list. 21 private DataGridView customersDataGridView =...new DataGridView(); 22 23 // This BindingSource binds the list to the DataGridView control

    1.5K10

    WPF备忘录(3)如何 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter

    一、如何 Datagrid 中获得单元格的内容    DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. ...但是,WPF中的DataGrid 不同于Windows Forms中的 DataGridView。 ...null) child = GetVisualChild(v); else break; } return child; }  二、WPF 使用值转换器进行绑定数据的转换...IValueConverter  有的时候,我们想让绑定数据以其他的格式显示出来,或者转换成其他的类型,我们可以 使用值转换器来实现.比如我数据中保存了一个文件的路径”c:\abc\abc.exe”...Window.Resources> 现在我们去绑定数据的地方使用

    5.5K70

    MultiRow中文版技术白皮书

    数据绑定方面,MultiRow支持三种模式: .NET标准的数据绑定模型,任何实现了IList,IListSource,IBindingList和IBindingListView接口的实例都可以被绑定到...非绑定模式,即在不绑定数据源的情况下,可以很方便的操作和显示数据。 虚拟模式,虚拟模式是为大型数据存储区而设计的,仅当数据需要显示的时候,由用户来操作单元格的填充,编辑和删除。...在数据校验方面,MultiRow内置了十余种校验器,可以方便的满足诸如值范围校验,值比较校验,正则表达式校验等,当校验失败时,可以以Tip,Icon,声音等多种方式提示用户,以便重新输入正确的值。...重视易用性 为了降低用户的学习成本,MultiRow采用了和DataGridView相似的接口设计,对于曾经使用过Microsoft DataGridView或者熟悉DataGridView接口设计的开发人员...MultiRow的三种典型应用场景 具有复杂布局的数据表格 数据源的每一条记录根据模板上的设置进行展示,同时,用户也可以做选择,编辑,及更新数据等操作。 ?

    1.3K50

    DataGridView控件中加入ComboBox下拉列表框的实现

    控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用代码实现数据绑定。...    cmb_Temp.DataSource = dtSex;     cmb_Temp.DropDownStyle = ComboBoxStyle.DropDownList; }   通常情况下我们都是数据库中获取数据表...(或者数据集),然后绑定DataGridView中的,这里我们为了避免连接数据库,手中构造一个数据库表,代码如下: private void BindData() {     DataTable dtData...    BindSex();     //绑定数据表     BindData();     // 设置下拉列表框不可见     cmb_Temp.Visible = false;     //...            BindSex();             //绑定数据表             BindData();             // 设置下拉列表框不可见

    3.7K20

    C#代码示例:在WinForm中创建并绑定一个DataTable

    在我的一篇文章中,我解释了如何在没有数据库的情况下以web形式绑定gridview。这里,我将解释如何在没有数据库的windows窗体中绑定datagrid。...它将暂时将数据绑定到如下所示的数据网格。我已经展示了下面的截图: ? 我们来看看怎么做,以下是实现步骤。 1、创建一个数据表。 2、通过需要数据类型来创建列名column或标题。...这样,我们就可以在windows窗体应用程序中绑定一个没有数据库的datagrid。 对于维护这个datagrid的状态,现在用户面临的问题是什么。...在这里,我已经解释了如何做到这一点。 在将行绑定到datagrid时,输入一个条件。首先,检查该数据表中是否有数据。...如果没有数据,则绑定datagrid中的列标头,否则只绑定没有datacolumn标头的行。 这里是第一个更改:声明datatable全局变量。

    3.5K40

    ado.net的简单数据库操作(三)——简单增删改查的实际应用

    上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦。   ...实例描述:在数据库新建一张TbClass表,将表的内容读取到一个DataGridView上,并且可以在winform面板上对表里的内容进行增、删、改的操作。首先给出winform的设计: ?...); 19 } 20 } 21 //将list数据绑定dataGridView上 22 this.dataGridView1....DataSource = list; 23 }   在使用SqlHelper之前,需要在App.config中添加配置代码和在项目中添加引用,这是需要注意的,因为在以前的博客中有详细讲解如何添加,...SqlHelper.ExecuteNonQurey(sql,parameters); 22 if (row > 0) 23 { 24 MessageBox.Show("更新

    1.3K30
    领券