您的位置:首页 > 其它

分享一个分页控件的实现思路

2016-12-19 12:27 495 查看
虽然分页控件满天飞,因为实在没找到WinForm程序合用的,所以就造了一回轮子。一开始认为这个事情比较简单,没有思考太多就开工了。事实上也没花多少时间就写好了第一版,想要有的功能也都实现了,以为万事大吉。。。。。。控件的样子长这样:

1             View.TabRole.RowsPerPageChanged += (sender, args) => _PageRows = View.TabRole.RowsPerPage;
2             View.TabRole.CurrentPageChanged += (sender, args) => PageChanged(args.RowHandle);
3             View.TabRole.TotalRowsChanged += (sender, args) => View.GdvRole.FocusedRowHandle = args.RowHandle;
4
5         /// <summary>
6         /// 切换页码后重新加载角色列表
7         /// </summary>
8         /// <param name="handel">当前焦点行</param>
9         private void PageChanged(int handel)
10         {
11             _CurrentPage = View.TabRole.CurrentPage;
12
13             LoadRoles(handel);
14         }
15
16         /// <summary>
17         /// 新增角色到角色列表
18         /// </summary>
19         /// <param name="role">RoleInfo</param>
20         internal void AddRole(RoleInfo role)
21         {
22             _Roles.Add(role);
23
24             View.TabRole.AddItems();
25             View.GrdRole.RefreshDataSource();
26         }
27
28         /// <summary>
29         /// 删除当前所选角色
30         /// </summary>
31         internal void RoleDelete()
32         {
33             _Roles.Remove(Role);
34
35             View.TabRole.RemoveItems();
36             View.GdvRole.RefreshData();
37         }


View Code
————————————————默默无语的分割线——————————————————

在这篇随笔发布后,又改了一点东西。把每页显示行数这个参数改成了通过事件参数传递,减少了一个属性。特别补充说明一下,FocusedRowHandle这个属性其实非常重要,有这个属性,在刷新或者改变每页显示行数后,焦点行就可以保持在原先选中行上面,这样界面就不会抖动。

现在总结起来,一个分页控件只需要公开:2个方法、3个事件、4个属性。无论是做成什么样子,用什么语言,都是如此。

如果这篇文字对看官有点用处的话,请帮忙点下推荐,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: