如何解决dataGridView的userDeletingRow事件、userDeletedRow事件的BUG? 本帖最后由 ddowncc 于 2012-09-20 10:49:07 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 dataGridView只有一行数据的时候,选中这一行数据,按"delete"键,userDeletingRow、userDeletedRow事件是不会触发的。一行以上数据时,事件才会触发。 参考:http://topic.csdn.net/u/20071224/16/11882dad-97ff-4e4d-810a-d1c5b3c3108a.html我的问题和这个一样。“UserDeletedRow事件在删除最后一行的时候,该事件竟然不激发汗~~删除其它行没有任何问题,只是最后一行的时候,相应的操作都不会激发事件包括UserDeletedRow、UserDeletingRow、NewRowNeeded等事件。” 为什么要那样删除呢,自己写个方法不行吗?private void FrmItemBackApply_KeyDown(object sender, KeyEventArgs e) { if (!dgv_Data.Focused) { return; } if (dgv_Data.Rows.Count <= 0) { return; } if (Keys.Delete == e.KeyCode) { if (dgv_Data.Rows.Count > 0 && dgv_Data.CurrentCell.IsInEditMode) { return; } DelGridRow(); } } private void DelGridRow() { if (PageState == WinState.Add || PageState == WinState.Modify) { DataGridViewRow row = dgv_Data.CurrentRow; itemHash.Remove(row.Cells["flngstockallotid"].Value.ToInt()); dgv_Data.Rows.Remove(row); } }这是我的删除行,你看一下。 问题的关键是,为什么剩下最后一行时,为什么delete的相关事件不触发呢?想删除那行容易,但这个问题比较难。 从未用过那个事件,只用过DataTable的相关事件:RowDeleted、RowDeleting等,那个事件没任何问题。如果是List<T>,也有相关事件,对数据源设置事件不是更好吗?换个控件代码都不必重写。 客户根本不关心你用什么方法删除的,只需要达到效果又不影响效率即可,何必纠结于这个产自VS自身的bug呢... 自己已解决,用SelectionChanged代替 十进制与二进制转换问题,很急,请各位帮帮忙 初学c#,问个数据库连接的问题 求C#写的新闻编辑器 用C#如何进行这些数据库操作 求pppoe拨号代码或思路 如何获得百分数? 高手请进【关于gridview更新的问题】 新手刚学网络编程,想问大家一个问题。 软件打包... gridview通过列名获取索引 C#窗体设计,插入一张图片,放四个button,点击button,上下左右移动图片 WPF 消息响应机制遇到了问题
dataGridView只有一行数据的时候,选中这一行数据,按"delete"键,userDeletingRow、userDeletedRow事件是不会触发的。一行以上数据时,事件才会触发。
删除其它行没有任何问题,只是最后一行的时候,相应的操作都不会激发事件
包括UserDeletedRow、UserDeletingRow、NewRowNeeded等事件。”
{
if (!dgv_Data.Focused)
{
return;
}
if (dgv_Data.Rows.Count <= 0)
{
return;
}
if (Keys.Delete == e.KeyCode)
{
if (dgv_Data.Rows.Count > 0 && dgv_Data.CurrentCell.IsInEditMode)
{
return;
}
DelGridRow();
}
}
private void DelGridRow()
{
if (PageState == WinState.Add || PageState == WinState.Modify)
{
DataGridViewRow row = dgv_Data.CurrentRow;
itemHash.Remove(row.Cells["flngstockallotid"].Value.ToInt());
dgv_Data.Rows.Remove(row);
}
}
这是我的删除行,你看一下。
问题的关键是,为什么剩下最后一行时,为什么delete的相关事件不触发呢?想删除那行容易,但这个问题比较难。
如果是List<T>,也有相关事件,对数据源设置事件不是更好吗?换个控件代码都不必重写。