绕过DataGridView的滚动条BUG

本文描述了在.NET2.0中使用DataGridView组件手动填充数据时出现的滚动条位置错误问题。该问题发生在禁用并重新启用DataGridView后,通过更改ScrollBars属性可解决此BUG。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前些日子在开发中需要使用.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时,行数发生变化不会导致重算滚动条范围,从而导致错误。

转载于:https://www.cnblogs.com/westsource/archive/2007/10/12/AboutDataGridViewScrollBarException.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值