WinForm的延时加载控件概述
本文主要针对WinForm的延迟加载在常用控件的实现做简单的描述。在进行C#项目开发的时候具有一定的实用性。具体如下:
一、在界面第一次显示时加载。最简单的延迟加载可以通过控件第一次显示时加载数据,例如你有很多的页签,只有用户切换到这个页签时,才会加载数据。
在.NET的Control中提供SetVisibleCore虚方法,当检测value是true且第一次调用此方法时,调用延迟加载。但是并不推荐这个方法,因为你有更好的地方。
①.如果你的控件继承自Form或者UserControl,建议重载OnLoad;
②.如果继承自Control,可以重载OnCreateControl。
下面是延迟加载数据的例子:
public class MyTabPage : TabPage {
PRotected override void OnCreateControl() {
base.OnCreateControl();
string oldText = this.Text;
this.Text = "Loading..";
//TODO:在这里调用加载数据的方法
this.Text = oldText;
}
}
二、树控件在第一次展开时加载。TreeView因为所有的节点并不是继承自Control,所以不能使用上面的方式,但是TreeView提供了OnBeforeExpand虚方法,最简单的办法是在你打算实现延迟加载的节点加入一个是否已经加载的标记,当第一次展开时,检测这个标记。 必须记住你的延迟加载节点在根位置是不能收到这个事件的。
三、在表格中延迟加载。在Windows程序中,有的使用分页的方式实现延迟加载,但这种方式的用户体验非常的糟糕。如果你希望仍然使用滚动条的话,可以自己实现IBindList接口,内部持有一个数据的ID列表,在表格询问数据时,才到数据库加载数据,通常的表格控件都能够很好的工作。 但这里有个应该注意的地方,例如用户按下PageDown时,表格控件连续的调用获取数据方法,如果每次请求都去调用数据库,将会很低的性能,应该让你的程序“预知”到可能要读下50笔数据了,所以一次性多读50条就可以。
这种方法遇到表格排序的时候就没有办法了。
希望本文所述对大家的C#程序设计有所帮助
同类资源
- 汇编内存加载DLL稍微修改,源码内有说明,可用于远程注入
易语言汇编内存加载DLL稍微修改,源码内有说明,可用于远程注入例子源代码,比我这个方便很多,只需要填写一个参...
- 新版汇编内存加载DLL,自动寻址并支持加载带窗口和其他语言编译的DLL
易语言新版汇编内存加载DLL,自动寻址并支持加载带窗口和其他语言编译的DLL例子源代码,其实我也只是想把自动...
- c#调用dll,dll加载epk
易语言c#调用dll,dll加载epk例子源代码,通过c#调用dll,易语言写dll调用epk。...
- 动态/内存调用加载任意32/64模块源码汇编进程读写
易语言动态/内存调用加载任意32/64模块源码汇编进程读写例子源代码,只是适用于64位的部分函数,模块中以相同...
- 虚表自绘例子瞬间加载文件不是问题
虚表自绘例子瞬间加载文件不是问题源代码,虚表的显示都是由用户自己处理的,虚表不负责保存数据,所以加载东西...
- eWOW64Ext v1.21加载任意32/64模块,动态调用64位汇编进程读写
eWOW64Extv1.21加载任意32/64模块,动态调用64位汇编进程读写例子源代码,没有任何实质性内容更新,仅内部架构...
- 新版汇编内存加载DLL,添加导入表回调
易语言新版汇编内存加载DLL,添加导入表回调例子源代码,添加了导入表回调功能,至于用法源码内有例子。...
- Win10_Loading系统加载动画,调用Direct2D绘制附D2D模块
易语言win10系统加载动画,调用Direct2D绘制附D2D模块例子源代码,Direct2D不支持XP系统。...
- 加载中,进度圆动画
加载中,进度圆动画例子源代码,改了下,不再是匀速,速度会有变化。...
- 内存加载dll运行导出函数
易语言内存加载dll运行导出函数例子源代码,很简单的,没什么技术,代码全在截图里面了。...
- 鼠标模拟辅助点击器升级版带延时
鼠标模拟辅助点击器升级版例子源代码,本来也就是一次性用品,这次再次升级更新。...
- Web打印控件Scriptx6升级到7.0.0.8相关软件包
Web打印控件Scriptx6升级到7.0.0.8相关软件包本文件感兴趣的可以参考一下,含授权的详细步骤,以及升级到最新...