Hello,
I am using a radGridView on a Windows touch screen. When I am trying to scroll the rows by hand (EnableKineticScrolling was set to true), the scrolling process is very slow. If I will use the vertical scrollbar, then it is ok. How can I achieve this without using the vertical scrollbar?
I used EnableFastScrolling=true, but I did not see any improvement.
Regards,
Yannis
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik
Hello Dess,
can you try to execute this on a Windows touch screen tablet? There are still huge delays on the scroll of the RadGridView.
Regards,
Yannis
Hello, Yannis,
When I set the EnableKineticScrolling property to true, I have noticed that the kinetic scrolling behavior (even with the mouse) is slower compared to using the vertical scrollbar. The attached gif file illustrates better the difference with the scrolling performance.
I have logged it in our feedback portal by creating a public thread on your behalf. You can track its progress, subscribe for status changes and add your comments on the following link - feedback item.
I have also updated your Telerik points.
Currently, the possible solution that I can suggest is to disable the EnableKineticScrolling property. Alternatively, you can handle the MouseMove event and adjust the vertical scrollbar's value programmatically. A sample approach is demonstrated in the following code snippet. Note that this is just a sample approach and it may not cover all possible cases. Feel free to modify and extend it in a way which suits your requirements best.
public RadForm1()
{
InitializeComponent();
this.radGridView1.MouseDown += radGridView1_MouseDown;
this.radGridView1.MouseMove += radGridView1_MouseMove;
this.radGridView1.MouseUp += radGridView1_MouseUp;
}
private void radGridView1_MouseUp(object sender, MouseEventArgs e)
{
downLocation = Point.Empty;
}
private void radGridView1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
int delta = e.Y - downLocation.Y;
if (delta > 0)
{
this.radGridView1.TableElement.VScrollBar.Value = Math.Min(this.radGridView1.TableElement.VScrollBar.Maximum - this.radGridView1.TableElement.VScrollBar.LargeChange - 1,
this.radGridView1.TableElement.VScrollBar.Value + this.radGridView1.TableElement.VScrollBar.SmallChange);
}
else
{
this.radGridView1.TableElement.VScrollBar.Value = Math.Max(this.radGridView1.TableElement.VScrollBar.Minimum,
this.radGridView1.TableElement.VScrollBar.Value - this.radGridView1.TableElement.VScrollBar.SmallChange);
}
}
}
Point downLocation = Point.Empty;
private void radGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
downLocation = e.Location;
}
}
private void RadForm1_Load(object sender, EventArgs e)
{
this.productsTableAdapter.Fill(this.nwindDataSet.Products);
this.radGridView1.BestFitColumns();
this.radGridView1.EnableKineticScrolling = false;
this.radGridView1.TableElement.VScrollBar.SmallChange = 10;
}
I hope this information helps. If you need any further assistance please don't hesitate to contact me.
Regards,
Dess | Tech Support Engineer, Sr.
Progress Telerik