标题:c#Winfrom 当滚动条滚动的时候加载数据
只看楼主
z909562139
Rank: 2
等 级:论坛游民
帖 子:32
专家分:87
注 册:2012-11-5
结帖率:75%
已结贴  问题点数:20 回复次数:4 
c#Winfrom 当滚动条滚动的时候加载数据
我想实现当窗体加载的时候,窗体上就加载20条数据,当用户滚动滚动条的时候再加载其他数据,该怎么实现,不能用分页
搜索更多相关主题的帖子: 用户 
2012-12-04 09:55
mayuebo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:257
专家分:1282
注 册:2005-9-8
得分:0 
用什么控件显示数据,datagrid?

成功贵在坚持
2012-12-04 14:41
z909562139
Rank: 2
等 级:论坛游民
帖 子:32
专家分:87
注 册:2012-11-5
得分:0 
tablayoutPanel
2012-12-04 17:06
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
得分:20 
这样来弄,窗体上放一TableLayoutPanel叫Tlp,Dock设为Fill,Row的高度类型设置为Auto,窗体启动时从当前目录下载入Content.txt的前20行添加进Tlp,当Tlp的垂直滚动条到底是从文件读取一行加入Tlp并使之可见,再到底时再读一行,……,直到读完所有的行,代码如下:
程序代码:
using using using System.Text;
using System.Windows.Forms;

namespace WinformInfinitiScroll
{
    public partial class FormMain : Form
    {
        #region 只读全局字段

        private readonly StreamReader _sr;

        #endregion

        #region 构造函数

        public FormMain()
        {
            InitializeComponent();

            _sr = new StreamReader("Content.txt", Encoding.Default);
            for (var i = 0; i < 20; i++)
            {
                var line = _sr.ReadLine();
                if (string.IsNullOrWhiteSpace(line)) break;
                var label = new Label {Text = line};
                Tlp.RowCount++;
                Tlp.Controls.Add(label);
            }
            Tlp.Scroll += Tlp_Scroll;
            Closing += FormMain_Closing;
        }
       

        #endregion

        #region 控件事件

        void FormMain_Closing(object sender, CancelEventArgs e)
        {
            _sr.Close();
        }

        void Tlp_Scroll(object sender, ScrollEventArgs e)
        {
            if (e.NewValue + Tlp.VerticalScroll.LargeChange < Tlp.VerticalScroll.Maximum) return;
            var line = _sr.ReadLine();
            if (string.IsNullOrWhiteSpace(line))
            {
                Tlp.Scroll -= Tlp_Scroll;
                MessageBox.Show("已经是最后一项数据了。");
                return;
            }
            var label = new Label { Text = line };
            Tlp.Controls.Add(label);
            Tlp.ScrollControlIntoView(label);
        }

        #endregion
    }
}





[ 本帖最后由 mmxo 于 2012-12-4 19:28 编辑 ]

为提高中华编程水平而奋斗
2012-12-04 19:26
z909562139
Rank: 2
等 级:论坛游民
帖 子:32
专家分:87
注 册:2012-11-5
得分:0 
非常谢谢版主,刚看到代码,我先调试一下
2012-12-05 11:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-389467-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056401 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved