今天遇到一个有趣的问题,有人想实现datagridview的选中行上下移动,粗略找了下msdn没有相关属性和方法,随即自己写了一个
考虑几点问题,由于进行数据绑定的datagridview是不能直接控制其行来上下移动插入等操作的,所以改为直接操作其数据源,上移
就是删除原来的,然后添加一个新的到原位置-1的地方,基本思路就是这样了,下移差不多吧
简单代码如下:
if (dataGridView1.SelectedRows.Count == 0)
{
return;
}
DataTable dt =(DataTable) this.dataGridView1.DataSource;
int i = this.dataGridView1.Rows.IndexOf(dataGridView1.SelectedRows[0]);
object [] ot = dt.Rows[i].ItemArray;
DataRow dr = dt.Rows[i];
dt.Rows.Remove(dr);
DataRow drs = dt.NewRow();
drs.ItemArray = ot;
dt.Rows.InsertAt(drs, i - 1);
foreach (DataGridViewRow dgvr in dataGridView1.SelectedRows)
{
dgvr.Selected = false;
}
dataGridView1.Rows[i - 1].Selected = true;
dataGridView1.CurrentCell = dataGridView1.Rows[i-1].Cells[0];