WinForm 延时加载控件
2012-12-21 17:41
281 查看
有时候同一窗体上会拥有很多控件,加载时会出现“闪烁”现象,并且显示速度有点慢,有点像卡的感觉。于是Goolge了一下,发现了下文:
[Copy 自:http://tp5u.com/asp_net/2012/0917/13092.html ]
本文对延迟加载在常用控件的实现做简单的描述。
一、在界面第一次显示时加载 最简单的延迟加载可以通过控件第一次显示时加载数据,例如你有很多的页签,只有用户切换到这个页签时,才会加载数据。 在.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条就可以。
这种方法遇到表格排序的时候就没有办法了。
我发现在Form中,在第一次执行Activated事件时 做延时处理也不错,可以尝试一下哦。
[Copy 自:http://tp5u.com/asp_net/2012/0917/13092.html ]
本文对延迟加载在常用控件的实现做简单的描述。
一、在界面第一次显示时加载 最简单的延迟加载可以通过控件第一次显示时加载数据,例如你有很多的页签,只有用户切换到这个页签时,才会加载数据。 在.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条就可以。
这种方法遇到表格排序的时候就没有办法了。
我发现在Form中,在第一次执行Activated事件时 做延时处理也不错,可以尝试一下哦。
相关文章推荐
- WinForm的延时加载控件概述
- WinForm的延时加载控件概述
- winform DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部 z
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载
- WinForm--进度加载等待控件
- WPF加载Winform窗体时 报错:子控件不能为顶级窗体
- 解决导航问题winform的左侧树控件右侧panel加载用户控件
- Winform控件加载时闪烁的解决方案!
- Winform 窗体拆分、用户自定义控件、动态加载控件、控件居中
- 解决导航问题winform的左侧树控件右侧panel加载用户控件
- 解决导航问题winform的左侧树控件右侧panel加载用户控件
- WinForm如何动态加载用户控件
- 关于winForm界面控件和图片加载时出现闪屏的问题
- winForm中如何实现Webbrowser控件加载html页面?
- winform控件加载与更新有先后闪烁、延迟的解决办法
- Winform DevExpress控件库(二) 使用SplashScreenManager控件定制程序加载页面
- 提高DevExpress winform 控件加载速度
- Winform DevExpress控件库(二) 使用SplashScreenManager控件定制程序加载页面
- winForm界面控件和图片加载速度慢(屏闪情况
- WinForm-控件、窗体的构造方法和加载方法的比较