автоматическая прокрутка в ultragridview для инфраструктуры

#c# #.net #infragistics #ultrawingrid

#c# #.net #инфраструктура #ultrawingrid

Вопрос:

Я использую an Infragistics UltraGridView в своей программе. Можно ли настроить автоматическую прокрутку UltraGridView начала сверху вниз, а затем сбросить его обратно наверх? Также UltraGridView должно быть установлено как AutoRefresh . Есть идеи?

Ответ №1:

Вы можете просто создать замкнутый цикл следующим образом

 foreach (UltraGridRow row in grid.Rows)
{
    row.Activate();
}
  

Но неясно, какова ваша цель для этого кода. Ваш пользователь, вероятно, не сможет ничего понять из данных, пока они прокручиваются в сетке.

Вместо этого, если ваша цель состоит в том, чтобы установить определенную строку в качестве первой в области сетки, вам следует работать в соответствии с этим

 grid.ActiveRowScrollRegion.FirstRow = grid.Rows[500];
  

(При условии, что у вас, конечно, более 500 строк)

Если вы хотите замедлить прокрутку, вы можете добавить таймер и в событии 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

Комментарии:

1. Ну, цель ultra grid — предоставить пользователю данные без прокрутки вручную. Если прокрутка будет быстрой, есть ли способ установить ее на 30-секундный таймер?

2. Да, но вам нужно добавить таймер и запустить Activate внутри события Timer. Это означает, что вам нужно где-то сохранить количество и повторно использовать его

3. Я пытался использовать цикл, но он каким-то образом каждый раз приводит к сбою кода. Ошибок не отображается.

4. и теперь это не приводит к сбою кода, но автоматическая прокрутка не работает !! 🙁

5. Понятия не имею. Я протестировал его на сверхсетке в 8000 строк без каких-либо проблем.