【发布时间】:2018-10-01 20:20:13
【问题描述】:
我创建了一个子类 datagridview 来覆盖鼠标滚轮事件以捕捉鼠标滚动,然后发送向上或向下键。我创建一个数据表,通过按钮单击绑定为 mydatagridview 的数据源
private void button1_Click(object sender, EventArgs e)
{
DataTable myDataTable = new DataTable();
int NUM_ROWS = 150;
int NUM_COLS_TO_CREATE = 10;
for (int i = 0; i < NUM_COLS_TO_CREATE; i++)
{
myDataTable.Columns.Add("x" + i, typeof(string));
}
for (int i = 0; i < NUM_ROWS; i++)
{
var theRow = myDataTable.NewRow();
for (int j = 0; j < NUM_COLS_TO_CREATE; j++)
{
theRow[j] = "whatever";
}
//add the row *after* populating it
myDataTable.Rows.Add(theRow);
}
MyDataGridView1.DataSource = myDataTable;
}
覆盖鼠标滚轮事件的代码
public partial class MyDataGridView : DataGridView
{
protected override void OnMouseWheel(MouseEventArgs e)
{
if (e.Delta < 0)
SendKeys.Send("{DOWN}");
else
SendKeys.Send("{UP}");
}
}
如果我们使用鼠标滚轮以 SLOW 的方式滚动每个项目,它工作正常,但如果您使用鼠标滚轮滚动太快,则 datagridview 在某种程度上会变得滞后。
例如从第 1 行到第 5 行,它会从第 1 行跳到第 3 行,然后从第 3 行跳到第 5 行,类似这样,这里又出现了一个奇怪的问题。我在日常生活中经常使用“Navicat”..
所以如果我同时打开我的应用程序和 Navicat。即使我滚动得太快,鼠标滚轮滚动现在在我的应用程序上也变得非常流畅。但是如果我关闭 Navicat,那么滚动就会再次滞后。这是什么原因造成的?如果我不能很好地解释它,我很抱歉,我只想让每个项目的滚动顺畅。有什么建议吗?
【问题讨论】:
标签: c# performance datagridview scroll mousewheel