对于Winform DataGridView,我想要做的是在1小时内将行向上/向下移动1厘米。我搜索了一下,但找不到任何能给我一些线索的东西。更具体地说,假设我的机器上打开了Form,DataGridView填充了数据。如果我在1小时后查看DataGridView,它应该向上/向下移动1cm。移动应该是用户甚至不会意识到的,并且在单击/选择单元格/行时不会有任何问题。
有人可以指出我从哪里开始,我该如何实现?
注意:网格将保持不变。只是行将在1小时内上升/下降1厘米。 谢谢, MChicago
答案 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; }
}
}