#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 строк без каких-либо проблем.