在1小时内移动DataGridViewRow 1cm

时间:2012-03-16 16:30:04

标签: winforms datagridview scroll

对于Winform DataGridView,我想要做的是在1小时内将行向上/向下移动1厘米。我搜索了一下,但找不到任何能给我一些线索的东西。更具体地说,假设我的机器上打开了Form,DataGridView填充了数据。如果我在1小时后查看DataGridView,它应该向上/向下移动1cm。移动应该是用户甚至不会意识到的,并且在单击/选择单元格/行时不会有任何问题。

有人可以指出我从哪里开始,我该如何实现?

注意:网格将保持不变。只是行将在1小时内上升/下降1厘米。 谢谢, MChicago

1 个答案:

答案 0 :(得分:0)

此代码将使用计时器自动滚动DataGridView:要在一小时内移动1com,您必须通过实验找到正确的间隔值。

    public partial class Form1 : Form
    {
        private readonly Timer tmr = new Timer();
        private int start;

        public Form1()
        {
            InitializeComponent();

            tmr.Interval = 100;
            tmr.Tick += scrollGrid;
            tmr.Enabled = true;

            List<DisplayItem> list = new List<DisplayItem>
                {
                    new DisplayItem("Apple"),
                    new DisplayItem("Orange"),
                    new DisplayItem("Banana"),
                    new DisplayItem("Grape")
                };
            // Make a long enough list to see the scrolling
            dgv.DataSource = list.Concat(list).Concat(list).ToList();
        }    

        private void scrollGrid(object sender, EventArgs e)
        {
            PropertyInfo verticalOffset = dgv.GetType()
               .GetProperty("VerticalOffset", BindingFlags.NonPublic | 
                                              BindingFlags.Instance);


            start += 1;
            verticalOffset.SetValue(this.dgv, start, null);
        }

        private class DisplayItem
        {
            public DisplayItem(string s)
            {
                this.Value = s;
            }

            public string Value { get; set; }
        }
    }