WinForm的延时加载控件概述

 更新时间:2014年08月27日 09:44:40   投稿:shichen2014  
这篇文章主要介绍了WinForm的延时加载控件,很实用的技巧,在C#程序设计中有着比较广泛的应用,需要的朋友可以参考下

本文主要针对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#程序设计有所帮助

相关文章

  • C#使用AutoResetEvent实现同步

    C#使用AutoResetEvent实现同步

    这篇文章主要为大家详细介绍了C#使用AutoResetEvent实现同步的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • C# 使用SDL2实现Mp4文件播放音视频操作

    C# 使用SDL2实现Mp4文件播放音视频操作

    这篇文章主要介绍了C# 使用SDL2实现Mp4文件播放音视频操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C#七大经典排序算法系列(下)

    C#七大经典排序算法系列(下)

    这篇文章主要为大家详细介绍了C#七大经典排序算法系列下篇,直接插入排序,希尔排序和归并排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Unity实现角色受击身体边缘发光特效

    Unity实现角色受击身体边缘发光特效

    这篇文章主要为大家详细介绍了Unity实现角色受击身体边缘发光特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 关于C# TabPage如何隐藏的问题

    关于C# TabPage如何隐藏的问题

    TabPage没有Visible属性,所以只能通过设置将其与父控件(tabcontrol)的关联性去除就好了,如下面代码:
    2013-04-04
  • WPF自动隐藏的消息框的实例代码

    WPF自动隐藏的消息框的实例代码

    本文给大家介绍WPF自动隐藏的消息框实例代码,当鼠标放上去将一直显示,移开动画继续,提供normal和error两种边框。非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07
  • C# 守护进程的介绍及实现详解

    C# 守护进程的介绍及实现详解

    本文主要介绍了C# 守护进程的介绍及实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C#仿密保卡功能的简单实现代码

    C#仿密保卡功能的简单实现代码

    昨天拿C#写了个简单的密保卡程序(Console的,偷懒了一下 哈哈),实现了随机生成5x5矩阵卡、转换为字符串、从字符串读取矩阵卡以及简单验证的功能
    2013-04-04
  • c# 常见文件路径Api的使用示例

    c# 常见文件路径Api的使用示例

    c#编程中经常有遇到要处理文件路径的需求,本文分别讲述了如何从程序下面的文件和临时目录下的文件去使用路径api,感兴趣的朋友可以了解下
    2021-05-05
  • Avalonia封装实现指定组件允许拖动的工具类

    Avalonia封装实现指定组件允许拖动的工具类

    这篇文章主要为大家详细介绍了Avalonia如何封装实现指定组件允许拖动的工具类,文中的示例代码讲解详细,感兴趣的小伙伴快跟随小编一起来学习学习吧
    2023-03-03

最新评论