
C# datagridview 删除一行后自动定位到下一行
在一个dataGridView里显示出数据表,如果点击了条数据,就会在几个文本框里分别显示出几个数据表的数据dataGridView1_CellClick,最后,会把此条...
在一个dataGridView里显示出数据表,如果点击了条数据,就会在几个文本框里分别显示出几个数据表的数据dataGridView1_CellClick,最后,会把此条信息的内容通过“删除”按钮事件删除了。
现在,我想实现的功能是:因为要通过点击dataGridView里的数据才会在文本框显示出新的信息,那么有没有可能实现,当删除一条信息后,下一条信息,会自动在文本框里显示呢?那么我就可以连续的删除几条信息了!不用通过反复点击信息。
我需要劲可能详细的说明!谢谢帮忙. 展开
现在,我想实现的功能是:因为要通过点击dataGridView里的数据才会在文本框显示出新的信息,那么有没有可能实现,当删除一条信息后,下一条信息,会自动在文本框里显示呢?那么我就可以连续的删除几条信息了!不用通过反复点击信息。
我需要劲可能详细的说明!谢谢帮忙. 展开
4个回答
展开全部
设置一个标识(int indexid),是为了指定你要显示的那一行
在删除行的时候设置indexid为删除的当前行的index:
indexid = dataGridView1.CurrentRow.Index;
在更新数据的时候可以如下设置,这些设置是为了防止指定的当前行出错
if (indexid < 0)
{ indexid = 0;}
if (indexid > dataGridView1.Rows.Count - 1)
{ indexid = indexid - 1;}
下面这句是指定datagridview的当前行
dataGridView1.CurrentCell = dataGridView1.Rows[indexid].Cells[0];
下面是datagridview的一个方法selectionchanged,当列表选中的行发生变化时调用这个函数
dataGridView1_SelectionChanged(sender, e);
具体示例如下:
int indexid=0;
///删除的函数
private void btnDel_Click(object sender, EventArgs e)
{
DataGridViewCell cell = dataGridView1.CurrentRow.Cells[0]; //要被删除的当前行
indexid = dataGridView1.CurrentRow.Index;//得到被删除那行的索引
DataUpdate(sender, e); //具体函数如下
}
///DataUpdate函数
private void DataUpdate(object sender, EventArgs e)
{
///////////////这个地方可以是数据的更新///////////////
if (indexid < 0)
{ indexid = indexid + 1;}
if (indexid > dataGridView1.Rows.Count - 1)
{indexid = indexid - 1;}
dataGridView1.CurrentCell = dataGridView1.Rows[indexid].Cells[0];//这里注意Cells中的索引必须是可见的列
dataGridView1_SelectionChanged(sender, e);
}
///dataGridView1_SelectionChanged函数,这个函数是datagridveiw控件自带的方法
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow== null)
return;
/////////////这里是每一行的某一列对应着你的控件的显示///////////
如:textbox1.Text=dataGridView1.CurrentRow.Cell[0].Value.ToString();
}
在删除行的时候设置indexid为删除的当前行的index:
indexid = dataGridView1.CurrentRow.Index;
在更新数据的时候可以如下设置,这些设置是为了防止指定的当前行出错
if (indexid < 0)
{ indexid = 0;}
if (indexid > dataGridView1.Rows.Count - 1)
{ indexid = indexid - 1;}
下面这句是指定datagridview的当前行
dataGridView1.CurrentCell = dataGridView1.Rows[indexid].Cells[0];
下面是datagridview的一个方法selectionchanged,当列表选中的行发生变化时调用这个函数
dataGridView1_SelectionChanged(sender, e);
具体示例如下:
int indexid=0;
///删除的函数
private void btnDel_Click(object sender, EventArgs e)
{
DataGridViewCell cell = dataGridView1.CurrentRow.Cells[0]; //要被删除的当前行
indexid = dataGridView1.CurrentRow.Index;//得到被删除那行的索引
DataUpdate(sender, e); //具体函数如下
}
///DataUpdate函数
private void DataUpdate(object sender, EventArgs e)
{
///////////////这个地方可以是数据的更新///////////////
if (indexid < 0)
{ indexid = indexid + 1;}
if (indexid > dataGridView1.Rows.Count - 1)
{indexid = indexid - 1;}
dataGridView1.CurrentCell = dataGridView1.Rows[indexid].Cells[0];//这里注意Cells中的索引必须是可见的列
dataGridView1_SelectionChanged(sender, e);
}
///dataGridView1_SelectionChanged函数,这个函数是datagridveiw控件自带的方法
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if (dataGridView1.CurrentRow== null)
return;
/////////////这里是每一行的某一列对应着你的控件的显示///////////
如:textbox1.Text=dataGridView1.CurrentRow.Cell[0].Value.ToString();
}
展开全部
我跟你说一下思路呀,
不管是你点击的一行还是,默认选中了一行。只要有选中的一行,就有个datagridview的当前行的索引属性。相信你在显示文本框中也是用的这个属性吧。
当你点删除的时候,你判断一下datagridview.rows.count-1是否大于当前行的索引,如果是,那就设置datagridview.rows[curIndexID+1]的行为选中状态,同时绑定每个文本框。
下面是伪代码:(写在删除按钮事件)
if datagridview.rows.count-1>当前选中行的ID
{
设置datagridview.rows[当前选中行的ID+1]为选中状态
绑定各个文本框
}
不管是你点击的一行还是,默认选中了一行。只要有选中的一行,就有个datagridview的当前行的索引属性。相信你在显示文本框中也是用的这个属性吧。
当你点删除的时候,你判断一下datagridview.rows.count-1是否大于当前行的索引,如果是,那就设置datagridview.rows[curIndexID+1]的行为选中状态,同时绑定每个文本框。
下面是伪代码:(写在删除按钮事件)
if datagridview.rows.count-1>当前选中行的ID
{
设置datagridview.rows[当前选中行的ID+1]为选中状态
绑定各个文本框
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dataGridView带有删除Rows的属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
datagridview有一个currecell还是currrow这样的属性,记的不太清楚,就是设置选中哪个单元格或哪一行,你可以在删除事件的最后设置这个属性到你需要的位置
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询