绕过DataGridView的滚动条BUG

前些日子在开发中需要使用.Net 2.0中的DataGridView组件来进行手动填充数据(非使用DataBind的方式)时,发现其滚动条状态有问题。重新这个BUG的步骤如下:

  1. 将一个DataGridView的Enabled设置为false;
  2. 填充数据;
  3. 然后设置其Enabled属性为true;
  4. 把焦点置入这个DataGridView的一个单元格中,使用回车键或者向下箭头键一直向下焦点,会出现一个滚动条位置错误。

代码如下:

private void execute(int count)

{

dataGridView1.Enabled = false;

try

{

dataGridView1.Rows.Clear();

for (int i = 0; i < count; i++)

{

dataGridView1.Rows.Add(new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() });

}

}

finally

{

dataGridView1.Enabled = true;

}

}

 

通过设置DataGridView的ScrollBars属性可绕过这个BUG,修正后的如下

private void execute(int count)

{

dataGridView1.ScrollBars = ScrollBars.None; //

dataGridView1.Enabled = false;

try

{

dataGridView1.Rows.Clear();

for (int i = 0; i < count; i++)

{

dataGridView1.Rows.Add(new object[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString() });

}

}

finally

{

dataGridView1.Enabled = true;

dataGridView1.ScrollBars = ScrollBars.Both; //

}

}

 

估计这个BUG产生的原因是DataGridView的Enabled属性为false时,行数发生变化不会导致重算滚动条范围,从而导致错误。

posted on 2007-10-12 17:08  阿齐  阅读(1631)  评论(0编辑  收藏  举报