c#如何使用线程操作datagridview

GUNDAM525 2010-01-05 09:00:29
我在做一个数据查询报表软件,想从数据库中取出数据,然后放入datagridview中。这个功能已经实现。我想做的是,利用线程来操作写入datagridview。
问题:当写入datagridview完毕后,貌似线程把该控件给卡住了,没有办法拖动它的滚动条,请问各位大侠如何解决?
问题补充:希望给出一个示例,谢谢
...全文
341 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
GUNDAM525 2010-01-06
  • 打赏
  • 举报
回复
还是没有满意答案,结贴散分
cena_jin 2010-01-05
  • 打赏
  • 举报
回复
想法很不错!
平生我自如 2010-01-05
  • 打赏
  • 举报
回复
难……
peterb 2010-01-05
  • 打赏
  • 举报
回复
yinrongg 2010-01-05
  • 打赏
  • 举报
回复
收藏先
GUNDAM525 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wartim 的回复:]
如果想滚动得流畅点
C# codefor (double i=0; ; i++)
{this.Invoke(new Action<double>(AddRow),new Object[] { i });
Thread.Sleep(50);
Application.DoEvents();
}
[/Quote]
我从数据库中取出的列太多了,像这样添加不太现实吧,能不能直接在dataset中处理?
wartim 2010-01-05
  • 打赏
  • 举报
回复
如果想滚动得流畅点

for (double i = 0; ; i++)
{
this.Invoke(new Action<double>(AddRow), new Object[] { i });
Thread.Sleep(50);
Application.DoEvents();
}
WUTOUXU 2010-01-05
  • 打赏
  • 举报
回复
学习了,谢谢诶
wartim 2010-01-05
  • 打赏
  • 举报
回复
并不影响鼠标滚动啊

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsApplication264
{
public partial class Form1 : Form
{
DataGridView DGV = new DataGridView();

public Form1()
{
InitializeComponent();

DGV.Parent = this;
DGV.Dock = DockStyle.Fill;
DGV.Columns.Add("c", "c");

new Thread(new ThreadStart(DoThead)).Start();
}

void DoThead()
{
for (double i = 0; ; i++)
this.Invoke(new Action<double>(AddRow), new Object[] { i });
}

void AddRow(double D)
{
DGV.Rows.Add(new Object[] { D });
}
}
}
huminghua 2010-01-05
  • 打赏
  • 举报
回复
想发不错,自己再仔细想想咯!
HooverHuang 2010-01-05
  • 打赏
  • 举报
回复
想法很有建设性。。。实现起来可能有难度,关注学习。。。
沙徐 2010-01-05
  • 打赏
  • 举报
回复
/// <summary>
/// 读取数据
/// </summary>
public void ReadDataSet()
{
SqlDbAgent db = new SqlDbAgent();
DataSet ds = db.ExecuteDataSet(null, ConnectionStringNo.Second, "SELECT * FROM MGA100T WHERE TR_DT LIKE '20100101'");
try
{
//显示
SetDataBind(ds);
}
finally
{
ds.Dispose();
}
}
public delegate void SetDataBindDelegate(DataSet ds);
public void SetDataBind(DataSet ds)
{
if (this.dgvResult.InvokeRequired)
{
SetDataBindDelegate d1 = new SetDataBindDelegate(SetDataBind);
this.Invoke(d1, new object[] { ds });
}
else
{
this.dgvResult.DataSource = ds;
this.dgvResult.DataMember = ds.Tables[0].TableName;
}
}

111,123

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧