110,538
社区成员
发帖
与我相关
我的任务
分享
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt1 = new DataTable();
for (int i = 0; i < 5; i++)
{
DataColumn col = new DataColumn(i.ToString());
dt1.Columns.Add(col);
}
for (int i = 0; i < 20; i++)
{
DataRow row = dt1.NewRow();
for (int j = 0; j < 5; j++)
{
row[j] = j.ToString();
}
dt1.Rows.Add(row);
}
dataGridView1.DataSource = dt1;
vScrollBar1.Maximum = (dataGridView1.RowCount - dataGridView1.DisplayedRowCount(false) + 3) * dataGridView1.RowTemplate.Height;
vScrollBar1.Minimum = 0;
vScrollBar1.SmallChange = dataGridView1.RowTemplate.Height;
vScrollBar1.LargeChange = dataGridView1.RowTemplate.Height * 3;
}
private void vs_Scroll(object sender, ScrollEventArgs e)
{
dataGridView1.FirstDisplayedScrollingRowIndex = e.NewValue / dataGridView1.RowTemplate.Height;
Application.DoEvents();
}
private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{
vScrollBar1.Maximum += dataGridView1.RowTemplate.Height;
//dataGridView1.Refresh();
}
private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
dataGridView1.FirstDisplayedScrollingRowIndex = dgv.Rows.Count - 1
}
如果这样写在addrow的时候不会出现问题,但是当scrollbar拖动时问题仍然存在。
我已经找到一点思路就是修改scrollbar的maximun和minimun,使这个scrollbar正好能够位置对应。
问题产生的原因应该在于自己写的scrollbar无法整除这个offset。
这里其实就是个数值转换的问题。相信一定可以解决。
foreach (Control c in dataGridView1.Controls)
{
Console.WriteLine(c);
}