我在我的程序中使用Infragistics UltraGridView
。是否可以将其设置为从顶部开始自动滚动UltraGridView
,然后将其重置回顶部?此外,UltraGridView
将设置为AutoRefresh
。有什么想法吗?
答案 0 :(得分:1)
你可以简单地构建一个紧密的循环
foreach (UltraGridRow row in grid.Rows)
{
row.Activate();
}
但目前还不清楚您对此代码的目的是什么。当用户在网格上滚动时,您的用户可能无法理解任何数据。
相反,如果你的观点是将特定行设置为网格区域中的第一行,那么你应该沿着这条线工作
grid.ActiveRowScrollRegion.FirstRow = grid.Rows[500];
(假设你当然有超过500行)
如果你想减慢滚动速度,那么你可以添加一个Timer,并在Tick事件中运行Activate调用。在这种情况下,你可以编写一个这样的类
public class SlowScroller
{
private UltraGridRow current = null;
private UltraGrid grd = null;
private System.Windows.Forms.Timer t = null;
public SlowScroller(UltraGrid grid)
{
grd = grid;
t = new System.Windows.Forms.Timer();
}
public void Start(int interval)
{
t.Interval = interval;
t.Tick += onTick;
t.Start();
}
public void Stop()
{
if (t.Enabled)
t.Stop();
}
private void onTick(object sender, EventArgs e)
{
if(current == null)
current = grd.Rows[0];
else
current = current.GetSibling(SiblingRow.Next);
current.Activate();
}
}
并用
调用它SlowScroller ss = new SlowScroller(grid);
ss.Start(500); // Scroll every 500 milliseconds
请注意Stop方法的存在。这是必要的,因为即使您丢弃表单,也不希望此类继续触发Tick事件。因此,您需要在Form_Closing事件处理程序中调用Stop