在infragistics的ultragridview中自动滚动

时间:2016-10-13 13:19:36

标签: c# .net infragistics ultragrid

我在我的程序中使用Infragistics UltraGridView。是否可以将其设置为从顶部开始自动滚动UltraGridView,然后将其重置回顶部?此外,UltraGridView将设置为AutoRefresh。有什么想法吗?

1 个答案:

答案 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