我做了一个datagridview dgv加载的数据很多,必须要加载,但是在加载的时候会出现 类似于卡死的状态,我想这是怎么样怎么在我加载全部完成的时候,在显示整个窗体,或者是类似于进度条之类的东西就是加载之后再显示整个窗体,各位大侠们,有好的方法没有?
解决方案 »
- c# sql dateadd
- ProductExportTemplate.aspx 模板导出 Excel 问题
- c#将子窗体镶嵌在MDI主窗体的panle里的问题
- 怎么读取文件夹里的所有文件。
- 图像处理高手请进-高分求图像多边形拷贝
- 求助:C#中怎样实现从文体框输入拼音首字母同步查出汉字显示在ListView中
- 請問此書可有下載?
- winform 的datagridview 如何通过语句把某一列改为DataGridViewComboBoxColumn这种类型
- 哪位大侠有c#.net的入门电子书?小弟我给50分!
- c# 引用vc6.0 工程问题,不知道如何封装c++ lib,请高手帮忙
- sql 日期时间的转换
- 问各位一个问题
public MethodInvoker _BindDataHandler;//这个东西还是委托,你用它来指向你给表格绑定数据的方法
在点击查询的按钮时间里面执行LoadData()
public void LoadData()
{
if (_LoadDataHandler != null && _BindDataHandler != null)
{
LoadData(_LoadDataHandler); Invoke(_BindDataHandler);
}
} private void LoadData(MethodInvoker loadDataHandler)
{
if (loadDataHandler != null)
{
DlgLoading loading = new DlgLoading();//DlgLoading 是一个Form,你在这个Form里面放一个不停滚动的图片,就可以了!当然你也可以放FLASH动画都可以。
System.Threading.Thread th = new System.Threading.Thread(delegate() { LoadThread(loading, loadDataHandler); });
th.Start();
loading.ShowDialog();
}
} /// <summary>
/// 后台线程
/// </summary>
/// <param name="arg"></param>
/// <param name="getData"></param>
/// <param name="bindData"></param>
private static void LoadThread(object arg, MethodInvoker loadDataHandler)
{
DlgLoading loading = (DlgLoading)arg;
MethodInvoker funcClose = loading.Close;
Stopwatch sw = new Stopwatch(); try
{
sw.Start(); //获取数据
loadDataHandler(); sw.Stop();
TimeSpan ts = sw.Elapsed; if (ts.TotalSeconds < 0.5)
{
int iSleep = Convert.ToInt32(Math.Floor((0.5 - ts.TotalSeconds) * 1000)); Thread.Sleep(iSleep);
}
}
catch
{ }
finally
{
//关闭loading
loading.Invoke(funcClose);
}
} 这个很好用,而且你可以吧这3个函数封装到一个类里面去,不管查询数据量的多少,都是用这些方法,又方便,又好用!好用的话请给分哦,我好穷啊没分!